2
我知道如何使用NSStream
类创建输入/输出流套接字。我还能够建立TCP连接和SSL连接。但我不知道如何建立与HTTP_PROXY
服务器的流套接字连接。服务器还需要发送用户名/密码。如何使NSStream套接字连接到HTTP_PROXY服务器(服务器还需要身份验证)?
这可能使用NSStream
API的?
我知道如何使用NSStream
类创建输入/输出流套接字。我还能够建立TCP连接和SSL连接。但我不知道如何建立与HTTP_PROXY
服务器的流套接字连接。服务器还需要发送用户名/密码。如何使NSStream套接字连接到HTTP_PROXY服务器(服务器还需要身份验证)?
这可能使用NSStream
API的?
对于像我这样卡住的人。这是我解决它的方式。
使用正确的代理密钥 - kCFStreamPropertyHTTPProxyHost
和 kCFStreamPropertyHTTPProxyPort
。
CFHTTPMessageRef request;
request = CFHTTPMessageCreateRequest(
NULL,
CFSTR("GET"),
(__bridge CFURLRef) [NSURL URLWithString:@"http://www.apple.com/"],
kCFHTTPVersion1_1
);
assert(request != NULL);
self.inputStream = CFBridgingRelease(
CFReadStreamCreateForHTTPRequest(NULL, request)
);
CFRelease(request);
if (YES) {
BOOL success;
NSDictionary * proxyDict;
proxyDict = @{
(__bridge NSString *) kCFStreamPropertyHTTPProxyHost: @"proxy.example.com",
(__bridge NSString *) kCFStreamPropertyHTTPProxyPort: @12345,
};
success = [self.inputStream setProperty:proxyDict
forKey:(__bridge NSString *) kCFStreamPropertyHTTPProxy
];
assert(success);
}
[self.inputStream setDelegate:self];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode
];
[self.inputStream open];