NSURLConnection 在 iOS 设备上重定向,但不在模拟器上
Posted
技术标签:
【中文标题】NSURLConnection 在 iOS 设备上重定向,但不在模拟器上【英文标题】:NSURLConnection redirected on iOS device, but not on simulator 【发布时间】:2010-10-28 19:38:27 【问题描述】:当我向特定网站发出请求时,我会在模拟器上获得所需的 XML 响应,但我会在设备上获得重定向页面。我认为这是因为它检测到我正在使用移动浏览器(通过 Mobile Safari 会出现类似的结果),但我将请求的用户代理字符串设置为我的笔记本电脑浏览器的 UA 并将其余部分置空(我也尝试仅设置 UA):
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request setAllHTTPHeaderFields:[NSDictionary dictionaryWithObject:@"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11" forKey:@"User-Agent"]];
NSURLConnection* _connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
网站如何仍然检测到我正在使用移动浏览器?相同的 GET 通过零信息的 telnet 工作,这意味着默认响应是桌面版本。
【问题讨论】:
【参考方案1】:原来 Mobile Safari 会在模拟器中自动重定向/重新协商 http->https,但不会在设备上这样做。
【讨论】:
您应该就此向 Apple 提交错误报告。以上是关于NSURLConnection 在 iOS 设备上重定向,但不在模拟器上的主要内容,如果未能解决你的问题,请参考以下文章
iOS UIWebView 在 NSURLConnection 之后不加载 url
清除 iOS 应用程序上的 NSUrlConnection 缓存?