2009-02-10 7 views
16

Je suis en train de coder une application iPhone qui a besoin de faire de petites requêtes HTTP sur Internet. Dans notre LAN de corp, tout le trafic de HTTP doit passer par Squid.iPhone Simulator - définir le proxy HTTP

Le simulateur est clairement capable d'utiliser un proxy - puisque Mobile Safari fonctionne. Mais, comment puis-je obtenir/définir les paramètres de proxy dans le code?

Un groupe d'en-têtes est commenté pour le simulateur. Par exemple,

CFNetworkCopySystemProxySettings 

Dans CFProxySupport.h n'est pas disponible pour le simulateur - uniquement pour le périphérique. J'ai essayé de coder en dur comme ceci:

CFReadStreamSetProperty(stream, kCFProxyHostNameKey, @"internal.proxy.servername"); 
CFReadStreamSetProperty(stream, kCFProxyPortNumberKey, [NSNumber numberWithInt:80]); 
CFReadStreamSetProperty(stream, kCFProxyTypeKey, kCFProxyTypeHTTP); 

Mais pas de joie.

Pensées?

Répondre

4

Pour fermer cette option. Il semble que cela soit corrigé dans iOS4 SDK - la pile réseau du simulateur utilisera le proxy du Mac pour tous les appels HTTP.

+5

La mienne ne l'est pas. Avez-vous essayé ou est-ce quelque chose que vous avez lu dans les documents? – vlad259

+0

utilisez CFReadStreamRef et vous saurez .. il n'utilise pas de proxy .. – knocker

4

Vous pouvez essayer d'utiliser Proxifier: http://www.proxifier.com/mac/ Il vous permet de définir un proxy pour n'importe quel programme.

Pas ce que vous avez demandé mais cela devrait résoudre votre problème.

+0

Je ne pouvais pas le faire fonctionner ensemble. – Worker

6

Vous pouvez:
"Préférences Système" -> "Réseau" -> Sélectionnez votre périphérique réseau -> "Advanced" -> "proxies"

+3

Ce paramètre n'est pas disponible dans le simulateur. – Jim

+0

Il s'agit d'instructions OS X - le simulateur utilisera la configuration du proxy réseau à partir du Mac sur lequel il s'exécute. –

+0

c'est ennuyeux, je ne veux pas proxy tout mon mac, juste le simulateur ... comme je le ferais lors de l'utilisation d'un téléphone de test – Anentropic

0

Le simulateur est probablement pas capable d'utiliser un proxy. Il utilise la pile réseau standard fournie par Mac OS X, et que est ce qui utilise le proxy. Si les constantes sont commentées pendant l'utilisation du simulateur, et que vous avez essayé de le coder sans succès, c'est probablement l'une des nombreuses choses qui ne sont simplement pas les mêmes entre le simulateur et un périphérique, et Vous devrez tester cette partie de votre application sur un périphérique.

1

Cette question est un peu vieux, mais j'ai pensé que j'ajouterais mes résultats pour référence. Dans le SDK iOS 4.x au moins, le code suivant fonctionne à la fois sur le simulateur et l'iPhone.

CFDictionaryRef systemProxyDict = CFNetworkCopySystemProxySettings(); 
CFReadStreamSetProperty(m_resultRef, kCFStreamPropertyHTTPProxy, systemProxyDict); 
+0

comment puis-je résoudre si le proxy besoin d'authentification? – knocker

2

On dirait que XCode 4.0 (4A304a) a cassé ceci encore. Si je mets la pile aux appels http proxy via Burp, fonctionne bien avec chaque application (Safari, etc), mais le simulateur.

2

Il vous suffit de redémarrer le simulateur d'iPhone.

Pour cela, j'utiliser l'astuce suivante

aller à l'établissement >> Général >> Accessibilité >> texte en gras pour allumer >> vue sélecteur ouvert et demander un redémarrage pour le rendre efficace >> continuer >> presse simulateur iPhone redémarre maintenant

la fenêtre contextuelle demander le nom d'utilisateur et mot de passe pour proxy ...

testé dans le simulateur ios 7.1

+0

Ne fonctionne pas pour 8.1 – Caipivara

0

Tout fermer et réouvrir simulateur après l'application de configuration.

Questions connexes