我使用以下代码:

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSHTTPURLResponse *)response {
NSLog(@"Received redirect Response: %@ %@", [response allHeaderFields], [NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]]);
return request;
}

当我接收302与下面的头数据:

< HTTP/1.1 302 Found  
< Date: Wed, 03 Mar 2010 07:47:17 GMT  
< Server: lighttpd/1.4.19  
< Content-length: 0  
< Content-type: text/html;charset=utf-8  
< Location: `<new Location>`  
< Vary: Accept-Encoding  

这是在gdb控制台输出:

  

2010-03-03 08:42:03.265 MYPROG [68106:207]所获重定向响应:   (空)服务器错误2010-03-03 08:42:14.414 MYPROG [68106:207]   收到重定向响应:{点击       连接=“保持活跃”;点击       “内容编码” = gzip的;结果,       “内容长度” = 20;结果,       “内容类型”= “text / html的;字符集= UTF-8”;结果,       日期=“星期三,2010年03月03七点42分10秒格林尼治标准时间”;点击       “保持活动”= “超时= 15,最大= 100”;结果,       位置= “<new Location>”;点击       服务器= “的lighttpd / 1.4.19”;点击       变化=“接受编码”; }结果

在使用curl我只得到一个响应并tracedump告诉一样的,所以我相信,服务器只将一个重定向。结果 为什么被调用两次此选择?

有帮助吗?

解决方案

connection:willSendRequest:redirectResponse:被每一个请求之前调用,因此它被称为一次在原始请求,这不是一个重定向响应所以是零;然后加载重定向目标,其中响应是302响应于初始请求时,它被调用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top