【问题标题】:iPhone Simulator - set HTTP proxyiPhone 模拟器 - 设置 HTTP 代理
【发布时间】:2010-10-06 18:56:38
【问题描述】:

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

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

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

CFNetworkCopySystemProxySettings

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

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

但没有快乐。

想法?

【问题讨论】:

    标签: cocoa-touch ios-simulator


    【解决方案1】:

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

    【讨论】:

    • 模拟器中没有此设置。
    • 这些是 OS X 指令 - 模拟器将使用运行它的 Mac 上的网络代理设置。
    • 这很烦人,我不想代理我的整个 Mac,只是模拟器......就像我在使用测试手机时所做的那样
    【解决方案2】:

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

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

    【讨论】:

    • 你能把你在 proxifier 中使用的应用程序的名称贴出来吗?
    • 不是原始问题的真正答案。但我认为很多搜索这个问题的人,比如我,都在尝试设置一个代理来捕获在 iOS 上运行的暂存应用程序的 HTTP 流量。我花了几天的时间来解决这个问题,甚至尝试修改我的 Mayo/Alamofire,但到目前为止,我认为 Proxifier 是最简单的。
    【解决方案3】:

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

    【讨论】:

    • 我的不是。您是否尝试过,还是您在文档中阅读过的内容?
    【解决方案4】:

    看起来 XCode 4.0 (4A304a) 再次打破了这一点。如果我将堆栈设置为通过 Burp 代理 http 调用,那么除了模拟器之外的每个应用程序(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】:

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

          【讨论】:

            猜你喜欢
            • 2016-05-31
            • 2012-09-08
            • 2010-12-06
            • 1970-01-01
            • 2010-09-17
            • 2020-11-20
            • 1970-01-01
            • 2013-10-23
            相关资源
            最近更新 更多