2009-02-10 24 views
16

Sto codificando un'app per iPhone che deve effettuare piccole richieste HTTP su Internet. All'interno della nostra LAN aziendale, tutto il traffico HTTP deve passare attraverso Squid.Simulatore iPhone - imposta proxy HTTP

Il simulatore è chiaramente in grado di utilizzare un proxy, dal momento che Mobile Safari funziona. Ma come faccio a ottenere/impostare le impostazioni del proxy nel codice?

Un gruppo di intestazioni viene commentato per il simulatore. Ad esempio,

CFNetworkCopySystemProxySettings 

In CFProxySupport.h non è disponibile per il simulatore, ma solo per il dispositivo. Ho provato hardcoding in questo modo:

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

Ma nessuna gioia.

Pensieri?

risposta

4

Per chiudere. Sembra che questo sia stato risolto nell'SDK di iOS4: lo stack di rete sul simulatore utilizzerà il proxy del Mac per qualsiasi chiamata HTTP.

+5

Il mio non lo è. Hai provato o è qualcosa che leggi nei documenti? – vlad259

+0

usa CFReadStreamRef e lo saprai .. non usa il proxy .. – knocker

4

Puoi provare a utilizzare Proxifier: http://www.proxifier.com/mac/ Consente di impostare un proxy per qualsiasi programma.

Non è quello che hai chiesto, ma dovrebbe risolvere il tuo problema.

+0

Non riuscivo a farlo funzionare insieme. – Worker

6

si può provare:
"Preferenze di Sistema" -> "Network" -> Seleziona il tuo dispositivo di rete -> "Avanzate" -> "Proxy"

+3

Questa impostazione non è disponibile nel simulatore. – Jim

+0

Queste sono istruzioni per OS X: il simulatore utilizzerà la configurazione proxy di rete dal Mac su cui gira. –

+0

questo è fastidioso, non voglio proxy mio intero mac, solo il simulatore ... come farei quando uso un telefono di prova – Anentropic

0

Il simulatore non è probabilmente in grado di utilizzare un proxy. Sta utilizzando lo stack di rete standard fornito da Mac OS X e che è ciò che sta utilizzando il proxy.

Se le costanti vengono commentate durante l'uso del simulatore e si è tentato di codificarlo senza fortuna, allora questa è probabilmente una delle tante cose che non è semplicemente la stessa tra il simulatore e un dispositivo, e dovrai testare questa parte della tua applicazione su un dispositivo.

1

Questa domanda è un po 'vecchia, ma ho pensato di aggiungere i miei risultati come riferimento. Nell'SD 4.x di iOS almeno, il codice seguente funziona sia sul simulatore che sull'iPhone.

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

come posso risolvere se il proxy ha bisogno di autenticazione? – knocker

2

Sembra che XCode 4.0 (4A304a) si sia di nuovo rotto. Se imposto lo stack per le chiamate http proxy tramite Burp, funziona bene con ogni app (Safari, ecc.) Ma con il simulatore.

2

Basta riavviare il simulatore iPhone.

per questo uso il seguente trucco

andare regolazione >> Generale >> >> Accessibilità testo in grassetto per accendere >> vista selettore aperta e chiedere di riavvio per rendere efficace >> stampa continua >> iPhone simulatore ora riavviare

pop-up richiedere nome utente e password per il proxy ...

testati nel simulatore iOS 7.1

+0

Non funziona per 8.1 – Caipivara

0

Basta chiudere e riaprire il simulatore dopo l'applicazione di configurazione.