所以我使用的是带有iPhone 4s的iOS 5.0.1(经过4次测试)并使用Sudz-c生成的代码来连接我们的Web服务。该服务在wifi上工作得很好但是如果我尝试超过3g或EDGE连接它不起作用。我收到以下错误: 它从Safari加载网址,甚至超过3g /边缘。
2012-01-15 18:32:13.987 SudzCExamples[487:707] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x18af60 {NSErrorFailingURLStringKey=http://sensored/app/soap/sensored/, NSErrorFailingURLKey=http://sensored/app/soap/sensored/, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x18afa0 "The request timed out."}
2012-01-15 18:32:13.988 SudzCExamples[487:707] Error: The request timed out.
SoapRequest中的url请求得到了反响
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
有任何建议吗?
更新:如果我使用相同代码的其他服务器,它也可以超过3g。似乎问题出在我们的服务器端代码中。有什么想法会导致这种情况吗?
更新2: 电话1:该应用仅适用于wifi。(运营商:Sonera) 电话2:该应用仅适用于wifi。(运营商:Sonera) 电话3:该应用仅适用于wifi。(运营商:Sonera) 电话4:该应用程序的工作量超过3g和wifi。 (承运人:Elisa) iPad:该应用程序的工作效果超过3g和wifi。 (承运人:Elisa)
如果我在手机4上使用我们的服务,它的效果也超过3g。如果我连接从电话4到iPhone1(或2或3)的互联网连接,它将在那个系留的wifi上工作,但不会超过它自己的3g。如果我将电话1(或2或3)连接到电话4,则它无法在电话4上的那个系留wifi上工作。
这些手机之间唯一不同的是,手机1和2和3使用名为TeliaSonera的芬兰互联网连接提供商,手机4使用Elisa。
更新3:我在iphone模拟器中运行应用程序,效果很好。在我启动Charles Proxy后,它不再起作用了。请求成功进入服务器,实际上它也给出了响应,即使应用程序失败也是如此。 Charles Proxy软件显示了请求和响应:
请求
POST /app/soap/sensored/ HTTP/1.1
Host: sensored
User-Agent: Sensored/1.0 CFNetwork/548.0.3 Darwin/11.2.0
Content-Length: 396
Accept: */*
SOAPAction: urn:sensoredSoapModelAction
Content-Type: text/xml; charset=utf-8
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=a60ef32d72121d625a95b75b90d48a22
Connection: keep-alive
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:sensored"><soap:Body><checkUpdates><authHash>daswwe12e2e2wweqwessd</authHash><lastCheckDate>2012-01-19 05:45</lastCheckDate></checkUpdates></soap:Body></soap:Envelope>
响应
HTTP/1.1 200 OK
Date: Thu, 19 Jan 2012 05:45:34 GMT
Server: Apache
X-Powered-By: PHP/5.3.2-1ubuntu4.11
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 537
Keep-Alive: timeout=5
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:sensored" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:checkUpdatesResponse><checkUpdatesReturn xsi:type="xsd:string">[dds2d,asddd2,a0333f,20dks]</checkUpdatesReturn></ns1:checkUpdatesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
概述
URL http://sensored/app/soap/sensored/
Status Complete
Response code 200 OK
Protocol HTTP/1.1
Method POST
Content-type text/xml; charset=utf-8
Client address /127.0.0.1
Remote Address sensored/177.33.83.129
Request Start time 19.1.2012 7:45:27
Request End time 19.1.2012 7:45:27
Response Start time 19.1.2012 7:45:28
Response End time 19.1.2012 7:45:33
Duration 5.77 sec
Request Duration 532 ms
Response Duration 4.99 sec
Latency 250 ms
Speed 0,24 KB/s
Response speed 0,13 KB/s
Request Header Size 366 bytes
Response Header Size 400 bytes
Request Size 396 bytes
Response Size 272 bytes
Total size 1,40 KB (1434 bytes)
Request Compression -
Response Compression 49,3% (gzip)
答案 0 :(得分:1)
“请求已超时。” - 这意味着它正在加载如此大量的数据,以至于Edge或3G连接导致超时,因为它们不够快。 Wifi更快,因此它可以在服务器因超时而取消请求之前加载整个数据。我建议您尝试使用/传输较少的数据,或者以块的形式加载,或者异步加载(如果您的NSURLConnection尚未执行此操作)。
答案 1 :(得分:1)
服务器主机是否正在尝试访问可通过3G网络访问的地址?当您使用WiFi网络时,您可能能够通过该网络访问任意数量的域。当您通过3G网络连接时,并非所有这些网络都必须可见。
如果该服务器可通过3G网络使用,则另一种可能性是您正在进行的服务可能会有有意或无意的限制,当您以不同方式进入服务时,这些限制会被触发。故意限制的示例可以是查看请求者的IP地址的服务,并且仅在请求来自网络内客户端时才响应。意外限制的一个示例可能是一种服务,它期望某个标头由本地网络代理自动插入,但在通过3G绕过该代理时永远不会插入。
您是否可以访问可能为您提供更多指导的服务器端日志?是否可以控制服务的配置?听起来TeliaSonera的3G服务在其连接方面做了不同的事情,这会改变您的服务收到消息的方式(或者根本不会收到消息)。
答案 2 :(得分:1)
我的iphone不会在wifi上加载facebook(所有其他应用程序工作正常,但facebook停止加载在safari wed浏览器和我的妈妈膝盖顶部modzilla但其他网站工作,但我的3g连接工作。在小时的搜索和几乎摧毁我的路由器(从字面上看)我找到了一个解决方案:我通过添加来自谷歌的DNS手动改变了我的路由器使用的服务器,一切都开始工作了:))现在:/信用这个人的建议&gt; http://tidbits.com/article/13259我也得到了他的谷歌dns。试试它也可能适合你。也许我们都因为路由器上的服务器而遇到麻烦。