Macにsquidhttpプロキシを設定し、ワイヤレス接続を共有するようにMacを設定しました。電話のwifi接続情報で、HTTPプロキシ設定を設定しました。
Server: 10.0.2.1
Port: 3128
Authentication: off
私のiOSアプリケーションでは、ネットワークにアクセスする方法が2つあります。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;
}
私がここで見逃した明らかなことはありますか?