2009-02-10 2 views
16

Я кодирую приложение iPhone, которое должно делать небольшие HTTP-запросы в Интернете. Внутри нашей корпоративной локальной сети весь HTTP-трафик должен проходить через Squid.iPhone Simulator - установить HTTP-прокси

Симулятор, очевидно, может использовать прокси-сервер, поскольку работает Mobile Safari. Но как мне получить/установить настройки прокси в коде?

Куча заголовков прокомментирована для симулятора. Например,

CFNetworkCopySystemProxySettings 

В CFProxySupport.h не доступен для симулятора - только для устройства. Я пробовал жесткое кодирование следующим образом:

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

Но без радости.

Мысли?

ответ

4

Чтобы закрыть это. Похоже, что это исправлено в iOS4 SDK - сетевой стек на симуляторе будет использовать прокси-сервер Mac для любых HTTP-вызовов.

+5

Шахты нет. Вы пробовали это или это то, что вы читаете в документах? – vlad259

+0

использовать CFReadStreamRef и u будет знать .. он не использует прокси .. – knocker

4

Вы можете попробовать использовать Проксификатор: http://www.proxifier.com/mac/ Он позволяет вам установить прокси-сервер в любую программу.

Не то, что вы просили, но оно должно решить вашу проблему.

+0

Я не мог заставить его работать вместе. – Worker

6

Вы можете попробовать:
«Системные настройки» -> «Сеть» -> Выберите сетевое устройство -> «Дополнительно» -> «Доверенные»

+3

Этот параметр недоступен в симуляторе. – Jim

+0

Это инструкции OS X - симулятор будет использовать настройку сетевого прокси-сервера с компьютера, на котором он работает. –

+0

Это раздражает, я не хочу проксировать весь свой мак, просто симулятор ... как я бы сделал при использовании тестового телефона – Anentropic

0

Тренажер, вероятно, не может использовать прокси-сервер. Он использует стандартный сетевой стек, предоставляемый Mac OS X, и , что - это то, что использует прокси.

Если константы закомментированы во время использования имитатора, и вы не очень хорошо пробовали жестко кодировать его, то это, вероятно, одна из многих вещей, которые просто не совпадают между симулятором и устройством, и вам придется протестировать эту часть вашего приложения на устройстве.

1

Этот вопрос немного устарел, но я подумал, что добавлю свои выводы для справки. В iOS 4.x SDK по крайней мере, следующий код работает как на симуляторе, так и на iPhone.

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

как я могу исправить, если прокси нужна аутентификация? – knocker

2

Похоже, что XCode 4.0 (4A304a) сломал это снова. Если я установил стек для прокси-адресов http-вызовов через Burp, отлично работает с каждым приложением (Safari и т. Д.), Но с симулятором.

2

Просто перезапустите симулятор iPhone.

для этого я использую следующий трюк

перейти к настройке >> >> Генеральный Accessibility >> жирный текст, чтобы перейти на >> вид сборщика открытым и попросить рестарта для сделать его эффективным >> нажмите продолжить >> iPhone симулятор Теперь перезапустите

всплывающем задать имя пользователя и пароль для прокси-сервера ...

протестирован в ИО тренажере 7,1

+0

Не работает для 8.1 – Caipivara

0

Просто закрыть и повторно открыть имитатор после применения конфигурации.

Смежные вопросы