在NSStream中使用系统代理

时间:2011-02-28 20:05:11

标签: objective-c cocoa nsurlconnection nsstream

我正在使用[NSStream getStreamsToHost:port:inputStream:outputStream:]创建一个到Web服务器的新流,以便即时传输生成的数据。我如何设置NSStream以使用像NSURLConnection这样的系统HTTP代理?我找不到有关如何查找系统代理的任何信息,到目前为止我发现的是如何针对流设置已知的SOCKS代理。

谢谢, Ĵ

1 个答案:

答案 0 :(得分:0)

免责声明:

  • 我自己还没试过。
  • 我是使用NSStream / CF(Read|Write)StreamRef API的新手。

有了这个,的方式出现使用SystemConfiguration - 框架 - 即函数SCDynamicStoreCopyProxies

此函数返回CFDictionaryRef,然后可以将其设置为流的kCFStreamPropertyHTTPProxy - 属性(任何其他代理类型都应使用协议的等效密钥)。

我还不知道,是否必须在CoreFoundation级别设置此属性,或者是否有可能使用-[NSStream setProperty:forKey:] - 我强烈假设后者,但又一次:我或多或少开始认真研究这些API 今天 ......

无论如何,有一个名为"Navigating Firewalls"的部分涵盖了Apple的CFNetworking Programming Guide中的这些内容 - 其中更详细地描述了这一点。


更新

如果有人仍然对此感兴趣,那么整个周末我都会设法找到API。

在iOS上,SCDynamicStore API(我发布的链接中引用的)不存在。但是,另一个 API自iOS 2.0开始就存在,并且自10.6以来就出现在OS X上:

CFProxySupport

尽管CFProxySupportCFNetwork框架的一部分,但在“CFNetwork编程指南”中没有提到它 - 这是一种耻辱,因为它使用简单,令人愉快。

提交了Apple的文档错误(rdar:// problem / 10491759)