3

我正在创建一个下载器,我想通过特定的代理服务器运行它。我能够将代理信息传递给 CFURLRef 对象。但不能与 NSURLDownload 一起使用,这将完全忽略所做的代理设置。

NSURL *url = [NSURL URLWithString:@"urlstring"];

CFReadStreamRef readStream; 
CFHTTPMessageRef message = CFHTTPMessageCreateRequest(kCFAllocatorDefault,
CFSTR("GET"),
(CFURLRef)url,
kCFHTTPVersion1_1);
readStream = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, message);
CFTypeRef keys[2], values[2];
keys[0] = kCFStreamPropertyHTTPSProxyHost;
values[0] = @"proxy.host";
keys[1] = kCFStreamPropertyHTTPSProxyPort;
values[1] = CFNumberCreate(NULL, kCFNumberSInt32Type, @"portNo");
CFDictionaryRef proxyDict = CFDictionaryCreate(NULL, keys, values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
// boRet =
 CFReadStreamSetProperty(readStream, kCFStreamPropertyHTTPProxy, proxyDict);

CFNetworkCopyProxiesForURL(
   CFURLRef          url,
   CFDictionaryRef   proxySettings
);

现在,如果我将 CFURLRef 转换为 NSURL 对象并将其传递给下载器,它不会按预期工作。如何将设置为 CFURLRef 对象的属性传递给 NSURLRequest?..还有其他方法可以实现吗?..我也尝试使用 ASIHTTPRequest 包装器..但是如何将其转换为 NSURLRequest?..任何帮助将不胜感激.

谢谢

4

0 回答 0