2009-02-10 32 views
16

Estoy codificando una aplicación de iPhone que necesita realizar pequeñas solicitudes HTTP a Internet. Dentro de nuestra Corp LAN, todo el tráfico HTTP debe pasar por Squid.iPhone Simulator - set HTTP proxy

El simulador es claramente capaz de usar un proxy, ya que Mobile Safari funciona. Pero, ¿cómo obtengo/configuro el proxy en el código?

Varios de los encabezados están comentados para el simulador. Por ejemplo,

CFNetworkCopySystemProxySettings 

En CFProxySupport.h no está disponible para el simulador - sólo para el dispositivo. Intenté hardcoding así:

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

Pero no joy.

¿Pensamientos?

Respuesta

4

Para cerrar esto. Parece que esto está solucionado en iOS4 SDK: la pila de red del simulador utilizará el proxy de Mac para cualquier llamada HTTP.

+5

La mía no es. ¿Has probado eso o es algo que lees en los documentos? – vlad259

+0

utilizar CFReadStreamRef yu saber .. no utiliza Proxy .. – knocker

4

Puede intentar usar Proxifier: http://www.proxifier.com/mac/ Le permite configurar un proxy para cualquier programa.

No es lo que pediste pero debería resolver tu problema.

+0

No pude hacerlo funcionar juntos. – Worker

6

que puede probar:
"Preferencias del Sistema" -> "Red" -> Seleccione su dispositivo de red -> "Avanzado" -> "Proxies"

+3

Esta configuración no está disponible en el simulador. – Jim

+0

Estas son instrucciones de OS X: el simulador utilizará la configuración del proxy de red desde la Mac en la que se ejecuta. –

+0

que es molesto, yo no quiero proxy de toda mi mac, sólo el simulador ... como lo haría al utilizar un teléfono de prueba – Anentropic

0

El simulador probablemente no es capaz de utilizar un proxy. Está utilizando la pila de red estándar proporcionada por Mac OS X, y que es lo que está usando el proxy.

Si las constantes están comentadas durante el uso del simulador, y ha intentado codificarlo sin suerte, esta es probablemente una de las muchas cosas que simplemente no es lo mismo entre el simulador y un dispositivo, y tendrás que probar esta parte de tu aplicación en un dispositivo.

1

Esta pregunta es un poco antigua, pero pensé en agregar mis hallazgos como referencia. En iOS 4.x SDK al menos, el siguiente código funciona tanto en el simulador como en el iPhone.

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

¿Cómo fijo si la autenticación de proxy tiene por qué? – knocker

2

Parece que XCode 4.0 (4A304a) ha roto esto de nuevo. Si configuro la pila para proxy http llamadas a través de Burp, funciona bien con todas las aplicaciones (Safari, etc.) pero el simulador.

2

Simplemente reinicie el simulador de iPhone.

para ello utilizo el siguiente truco

vaya a Configuración >> general >> >> Accesibilidad texto en negrita para encender >> vista selector abierta y pedir reinicio para hacerla efectiva >> Pulsar Continuar >> iPhone simulador de ahora reiniciar

la ventana emergente pedirá el nombre de usuario y contraseña para el proxy ...

probados en simulador de iOS 7.1

+0

no está funcionando para 8.1 – Caipivara

0

Sólo cerrar y reabrir el simulador después de la aplicación de configuración.