我正在尝试使用NSMutableRequest和NSURLConnection从服务器获取压缩文件。这是我正在使用的代码:
NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:downloadUrl
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:30.0];
[newRequest setValue:@"Y29tLm5vbWFkZ......" forHTTPHeaderField:@"Authorization"];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:newRequest delegate:self];
if (!connection) {
[self handleDownloadError];
}
我正在使用相同的NSURLConnectionDelegate方法
didReceiveResponse, didReceiveData, connectionDidFinishLoading, didFailWithError
但是,当我在ios 4.3或更早版本(它下载压缩文件)和ios 5.0(返回一个说“身份验证失败”的JSON)中运行此代码时,我得到了不同的响应。
ios 5.0为NSURLConnectionDelegate引入了许多新方法。但我不确定这是否是关于ios 5.0的更改api的问题,或者是以不同方式处理相同请求的服务器代码。有谁知道可能是什么问题?
答案 0 :(得分:3)
iOS5改变了HTTP标头大写的方式,也至少从末尾删除了空格。通过将它们打印到控制台来验证您收到的实际HTTP标头是什么:
- (void)connection:(NSURLConnection *)aConnection
didReceiveResponse:(NSURLResponse *)aResponse
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)aResponse;
NSLog(@"Response headers :%@", [httpResponse allHeaderFields]);
}
顺便说一下,您是否注意到您列出的那些方法在Apple iOS Developer Library docs for NSURLConnection标记为“在iOS 2.0到iOS 4.3中可用”?