代码之家  ›  专栏  ›  技术社区  ›  Dan Bennett

iPhone模拟器-设置HTTP代理

  •  17
  • Dan Bennett  · 技术社区  · 16 年前

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

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

    一堆头被注释掉,用于模拟器。例如,

    CFNetworkCopySystemProxySettings
    

    在cfproxysupport.h中,模拟器不可用-仅对设备可用。我试过这样的硬编码:

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

    但没有欢乐。

    思想?

    8 回复  |  直到 10 年前
        1
  •  6
  •   Thomas Zoechling    15 年前

    你可以试试:
    “系统首选项”->“网络”->选择网络设备->“高级”->“代理”

        2
  •  5
  •   Dan Bennett    14 年前

    关闭它。看起来这是在ios4 sdk中修复的-模拟器上的网络堆栈将使用mac的代理进行任何HTTP调用。

        3
  •  4
  •   Alexandre L Telles    16 年前

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

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

        4
  •  2
  •   John    14 年前

    看起来xcode 4.0(4a304a)又破了这个。如果我通过burp将堆栈设置为代理HTTP调用,那么除了模拟器之外,每个应用程序(safari等)都可以正常工作。

        5
  •  2
  •   g212gs    11 年前

    只需重启iPhone模拟器即可。

    为此,我使用以下技巧

    转到设置>>常规>>辅助功能>>粗体文本打开>>选取器视图打开并请求重新启动以使其生效>>按继续>>立即重新启动iPhone模拟器

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

    在iOS模拟器7.1中测试

        6
  •  1
  •   Kevin Campbell    14 年前

    这个问题有点老了,但我想我会加上我的发现作为参考。至少在iOS4.x sdk中,以下代码在模拟器和iPhone上都有效。

    CFDictionaryRef systemProxyDict = CFNetworkCopySystemProxySettings();
    CFReadStreamSetProperty(m_resultRef, kCFStreamPropertyHTTPProxy, systemProxyDict);
    
        7
  •  0
  •   Steve Madsen    15 年前

    模拟器可能无法使用代理。它使用的是Mac OS X提供的标准网络堆栈,以及 那个 是使用代理的原因。

    如果在模拟器使用过程中对常量进行注释,并且您尝试了不幸运地对其进行硬编码,那么这可能是模拟器和设备之间完全不同的许多事情之一,您必须在设备上测试应用程序的这一部分。

        8
  •  0
  •   Yan    10 年前

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