5

Wi-Fi(iOS5およびiOS6)で正常に動作するアプリでNSURLConnection(非同期)を使用しました。しかし、それは 3G で問題を引き起こします。アプリの 3G 接続を実行すると、didReceiveData メソッドでデータを取得できません。

デリゲート メソッドにログを記録しましたが、3G の使用中にリクエストがタイムアウトになります。何が問題になる可能性があります。

EDIT:サーバー側 - >リクエストがサーバーに送信され、サーバーがクライアントに応答も送信したことを示しています。

編集2:

私が書いたコードは次のとおりです。

NSURL *url = [NSURL URLWithString:@"someURL"];

NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url     
 cachePolicy:NSURLRequestUseProtocolCachePolicy                                   
 timeoutInterval:40.0];

//[req setHTTPShouldUsePipelining:YES];

[req setValue:@"x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[req setValue:@"someValue" forHTTPHeaderField:@"Accept"];
[req setValue:@"myCrdentails" forHTTPHeaderField:@"Authorization"];
[req setHTTPMethod:@"GET"];

[[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES];

応答ヘッダーは次のとおりです

< HTTP/1.1 200 OK
< X-Powered-By: Express
< Access-Control-Allow-Origin: *
< Content-Type: text/event-stream; charset=utf-8
< Connection: keep-alive
< Transfer-Encoding: chunked
4

4 に答える 4

1

この問題に何時間も苦労した後、ようやく有効な解決策を見つけました。NSMutableURLRequestオブジェクトには、セルラー ネットワークを許可するかどうかを設定するメソッドがあります。

[req setAllowsCellularAccess:YES];

NSURLRequestタイプのオブジェクトの値はデフォルトでYESのように見えますが、問題は解決しました。

うまくいけば、これは私のような誰かが問題に苦労し、この質問にたどり着くのに役立ちます.

于 2013-05-05T19:21:57.023 に答える
0

到達可能性フレームワークを使用して、3G に対して false を返すかどうかを確認してください。true が返されてもタイムアウトが発生する場合は、同期モデルに移動して、何が起こるかを確認してください。接続は正常に機能している可能性がありますが、何かがコールバックを傍受しています。

于 2012-10-28T15:14:40.107 に答える
0

これはhttpsですか?SSL検証の失敗が起こっているのではないかと思います...また、3Gを介してcurlからこれを照会しようとしましたか? 携帯電話会社がプロキシして有効なデータを提供していない場合、またはその IP が関連している場合 (ブラック リスト、閉じられたポートなど)、別の応答が返される可能性があります。確かにcurlでテストします。監獄で壊れた電話から、またはつながれた状態で。

于 2012-11-11T19:17:58.143 に答える