我已经在我的 Mac 上设置了一个 squid http 代理,并且我已经设置了我的 Mac 以共享它的无线连接。在我手机上的 wifi 连接信息中,我设置了我的 HTTP 代理设置:
Server: 10.0.2.1
Port: 3128
Authentication: off
在我的 iOS 应用程序中,我有两种访问网络的方式。对于 http 请求,我使用 NSURLRequest,对于其他 TCP 连接,我使用 AsyncSocket 库。
所有使用 NSURLRequest 的请求都使用代理没有问题(对于 SSL,代理充当 HTTP CONNECT 隧道)。但是,我似乎无法获得用于 AsyncSocket 连接的代理。
每当创建 CFStreams 时,我确实更新了 AsyncSocket 库以调用以下内容,例如:
//for printing out the proxy settings
static void printEntry (const void* key, const void* value, void* context) {
CFShow(key);
CFShow(value);
}
- (BOOL)createStreamsFromNative:(CFSocketNativeHandle)native error:(NSError **)errPtr
{
// Create the socket & streams.
CFStreamCreatePairWithSocket(kCFAllocatorDefault, native, &theReadStream, &theWriteStream);
.
.
.
CFDictionaryRef proxyDict = CFNetworkCopySystemProxySettings();
CFDictionaryApplyFunction(proxyDict, printEntry, NULL); // I see the proxy settings are correct here
CFReadStreamSetProperty(theReadStream, kCFStreamPropertyHTTPProxy, proxyDict);
CFWriteStreamSetProperty(theWriteStream, kCFStreamPropertyHTTPProxy, proxyDict);
CFRelease(proxyDict);
return YES;
}
我在这里错过了什么明显的东西吗?