iPhone模拟器 - 设置HTTP代理

时间:2009-02-10 23:14:08

标签: cocoa-touch ios-simulator

我正在编写一个需要向互联网发出小型HTTP请求的iPhone应用程序。在我们的公司局域网中,所有HTTP流量都必须经过Squid。

模拟器显然能够使用代理 - 因为Mobile Safari可以工作。但是,如何在代码中获取/设置代理设置?

为模拟器注释掉了一堆标题。例如,

CFNetworkCopySystemProxySettings

在CFProxySupport.h中,模拟器无法使用 - 仅限于设备。我试过像这样的硬编码:

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

但没有快乐。

思想?

8 个答案:

答案 0 :(得分:6)

您可以尝试:
 “系统偏好设置” - > “网络” - >选择您的网络设备 - > “高级” - > “代理”

答案 1 :(得分:5)

关闭此功能。看起来这已经在iOS4 SDK中修复了 - 模拟器上的网络堆栈将使用Mac的代理进行任何HTTP调用。

答案 2 :(得分:4)

您可以尝试使用Proxifier:http://www.proxifier.com/mac/ 它使您可以为任何程序设置代理。

不是你问的,但它应该可以解决你的问题。

答案 3 :(得分:2)

看起来XCode 4.0(4A304a)再次破坏了这一点。如果我将堆栈设置为通过Burp代理http调用,那么对于每个应用程序(Safari等)都可以正常工作,但是模拟器。

答案 4 :(得分:2)

只需重启iPhone模拟器即可。

为此我使用以下技巧

转到设置>>一般>>辅助功能>>要打开的粗体文字>>选择器视图打开并要求重新启动以使其有效>>按“继续”>> iPhone模拟器现在重启

弹出窗口询问代理的用户名和密码......

在ios模拟器7.1中测试

答案 5 :(得分:1)

这个问题有点陈旧,但我想加上我的发现可供参考。至少在iOS 4.x SDK中,以下代码适用于模拟器和iPhone。

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

答案 6 :(得分:0)

模拟器可能无法使用代理。它使用的是Mac OS X提供的标准网络堆栈,而 正在使用代理。

如果常规在模拟器使用过程中被注释掉了,并且你已经尝试过硬编码而没有运气,那么这可能是模拟器和设备之间的许多不一样的东西之一,而你我们必须在设备上测试你的应用程序的这一部分。

答案 7 :(得分:0)

应用配置后关闭并重新打开模拟器。