3

ASIHTTPRequestプロジェクトがBenによって放棄されたことは理解していますが、とにかく今では他のものに切り替えるには遅すぎるので、私は自分が抱えている問題に対処しようと決心しました。

私はPOSTを行っており、httpsプロトコルを使用してリクエストしています。リクエストに応じて持続的接続を無効にしました。

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setUseKeychainPersistence:YES];
    [request setShouldAttemptPersistentConnection:YES];

    // Set the request timeout 
    [request setTimeOutSeconds:REQUEST_TIME_OUT];


    // Upload an image
    NSData *imageData = UIImagePNGRepresentation(imageContainer.mImage);
    [request setPostBody:[NSMutableData dataWithData:imageData]];;

    [request setDelegate:self];
    [request setDidFinishSelector:@selector(uploadRequestFinished:)];
    [request setDidFailSelector:@selector(uploadRequestFailed:)];
    [request startAsynchronous];

そして、私が得A connection failure occurredているすべてのものkCFErrorDomainCFNetwork error -1005

プロジェクトの構成ですべてのデバッグ情報を有効にし、ASIHTTPRequest次のログを取得しました

[STATUS] Starting asynchronous request <ASIFormDataRequest: 0x1029e000>
[CONNECTION] Request <ASIFormDataRequest: 0x1029e000> will not use a persistent connection
[THROTTLING] ===Used: 0 bytes of bandwidth in last measurement period===
[THROTTLING] ===Used: 327680 bytes of bandwidth in last measurement period===
[CONNECTION] Request attempted to use connection #(null), but it has been closed - will retry with a new connection
[CONNECTION] Request <ASIFormDataRequest: 0x1029e000> will not use a persistent connection
[THROTTLING] ===Used: 229376 bytes of bandwidth in last measurement period===
[THROTTLING] ===Used: 360448 bytes of bandwidth in last measurement period===
[CONNECTION] Request attempted to use connection #(null), but it has been closed - we have already retried with a new connection, so we must give up[STATUS] Request <ASIFormDataRequest: 0x1029e000>: Failed
[CONNECTION] Request #(null) failed and will invalidate connection #(null)ata upload failed "Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0xf624750 {NSUnderlyingError=0xf6246f0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1005.)"

クラッシュが発生する理由はありますか?そしてこれを修正する方法は?

4

2 に答える 2

2

私は数ヶ月前に同じ問題を抱えていました。インターネット接続は保証されておらず、このエラーは 3G 接続でより一般的です。私の解決策は、再試行回数を上げることでした。内部でASIHTTPRequest.m再試行回数を少なくとも 5 に変更し、それが役立つかどうかを確認します。

- (BOOL)retryUsingNewConnection
{
    if ([self retryCount] < 5) {

これが機能する理由は、エラー-1005がキャッチさ-handleStreamErrorれ、上記のコードで許可されている回数だけ接続が再試行されるためです。

于 2012-06-04T14:40:03.333 に答える
0

みんな助けてくれてありがとう。

問題の原因がサーバー側であることがわかりました。800Kと言うより大きなデータを受け入れることを拒否しました。

どうもありがとう

于 2012-06-05T14:14:59.910 に答える