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 缓存?

NSURLConnection IOS 3G 问题

应用程序拒绝 NSUrlConnection IPv6 网络问题 iOS

与 NSURLConnection 委托方法相关的查询

NSURLConnection 以错误 iOS13 模拟器和 MACOS 10.14.6 完成