Подтвердить что ты не робот

IPhone Simulator - установить HTTP-прокси-сервер

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

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

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

CFNetworkCopySystemProxySettings

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

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

Но радости.

Мысли?

4b9b3361

Ответ 1

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

Ответ 2

Вы можете попробовать:
  "Системные настройки" → "Сеть" → Выберите сетевое устройство → "Дополнительно" → "Прокси"

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

перейти к настройке → Общие → Доступность → жирный текст, чтобы включить → Открыть сборщик и попросить перезагрузить его, чтобы он стал эффективным → нажмите продолжить → Симулятор iPhone теперь перезагрузится

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

тестируется в iOS-симуляторе 7.1

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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