2

サーバーにファイルをアップロードする方法を実装NSURLConnectionしました。デバイスが iOS6 にアップグレードされるまで、すべてが正常に機能します。現在、3G では正常に動作しますが、wifi 経由で接続すると、アップロードが途中で停止し、タイムアウトが設定されるまでハングします。

いくつかの調査の後、wifiを使用して:

  1. 小さいファイルをアップロードする場合、didSendBodyDataデリゲートは複数回呼び出されますが、これは問題ありませんが、奇妙なことに、 aftertotalBytesWrittenは と同等totalBytesExpectedToWriteであり、しばらく一時停止し、同じデリゲートが再度呼び出され、現在はtotalBytesExpectedToWriteの 2 倍になります。元のファイル サイズ。

  2. 大きなファイルをアップロードするとき、didSendBodyDataデリゲートは複数回呼び出されますが、totalBytesWritten到達することはありませんtotalBytesExpectedToWrite。途中で停止し、タイムアウトになるまでデリゲートは再度呼び出されません。

以下は、ファイルの送信を開始する方法の簡単な説明です。

NSURL *url = [[NSURL alloc] initWithString:MyURI];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
[req setHTTPMethod:@"POST"];
[req setTimeoutInterval:600];
[req setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];
[req setValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"];
[req setValue:userName forHTTPHeaderField:@"AuthField1"];
[req setValue:authorizationToken forHTTPHeaderField:@"AuthField2"];

[req setHTTPBody:data];

NSURLConnection *reqConnection = [[NSURLConnection alloc] initWithRequest:req delegate:self];

iOS6でwifi経由で接続するための変更は何ですか? アドバイスをいただければ幸いです。

4

0 に答える 0