エラードメイン= NSURLErrorDomainコード= -1005「ネットワーク接続が失われました。」


268

iOS7とiOS8の両方でXcode6-Beta1とXcode6-Beta2で正常に動作するアプリケーションがあります。しかし、Xcode6-Beta3、Beta4、Beta5では、iOS8でネットワークの問題に直面していますが、iOS7ではすべて正常に動作します。エラーが発生します"The network connection was lost."。エラーは次のとおりです。

エラー:エラードメイン= NSURLErrorDomainコード= -1005「ネットワーク接続が失われました。」UserInfo = 0x7ba8e5b0 {NSErrorFailingURLStringKey =、_kCFStreamErrorCodeKey = 57、NSErrorFailingURLKey =、NSLocalizedDescription =ネットワーク接続が失われました。、_kCFStreamErrorDomainKey = 1、NSUnderlyingError = 0x7a6957e0 "ネットワーク接続が失われました。"}

AFNetworking 2.xと次のコードスニペットを使用してネットワーク呼び出しを行います。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:<example-url>
   parameters:<parameteres>
      success:^(AFHTTPRequestOperation *operation, id responseObject) {
          NSLog(@“Success: %@", responseObject);
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          NSLog(@"Error: %@", error);
      }];

試しましたNSURLSessionが、同じエラーが表示されます。


すべてのアップデート ?それは私にとってWifi上のiOS 8でのみ発生しますが、回避策を見つけようとしています。
Dimillian 2014


誰かが私の問題を解決するのを手伝ってくれますか?ほぼ同じ問題ですが、異なるエラーコード、 stackoverflow.com
questions / 26972822 /…

1
iOS 10.0.1とXcode 8で同じ問題に直面しています
Satheeshwaran 2016年

1
私は今朝このエラーを受け取り、単純で奇妙な解決策で今それを修正しました。要求されたサーバーアドレスが間違っています。4xxまたは5xxステータスコードが返されません。この問題が発生しただけで、根本的な原因が正確にわかりません。そのため、チームのバックエンド開発者に確認してください。確認しないと、数時間を浪費します。
イタチ

回答:


414

シミュレーターを再起動すると問題が解決しました。


3
この問題がシムではなくデバイスにある場合はどうなりますか?デバイスを再起動しようとしましたが、まだ同じエラーが発生しました。
Sean Clark

2
@SeanClark:次の回答を参照してください:サーバーによってドロップされた後、OSがデッド接続を再利用するのではなく、ドロップする必要があるため、シミュレーターの再起動は機能します。この問題を回避するには、iOSクライアントのサーバーでキープアライブメカニズムを無効にするか、サーバーにアクセスできない場合は、失敗したときに同じリクエストを再試行するだけです(失敗するはずです) OSは接続をドロップし、再試行が送信されると新しい接続がインスタンス化されます)。
アーサー

私は現在Xcode 6.2を使用していますが、それを解決したのはiOSシミュレータ>設定とコンテンツのリセットをクリックしたことです。それが終了したら、シミュレーターを終了してプロジェクトを再構築して実行しました。その後、すべてが完全に機能しました。
KingPolygon 2015年

シミュレータをリセットすることは私にとってはうまくいきましたが、時間の10%だけです。私は新しいISPを手に入れましたが、それはちょっと変です。これは現在、シミュレータで常に発生しています。ネットワークである可能性があります。
noobsmcgoobs 2015

1
シミュレータをリセットしてもうまくいきませんでした。しかし、チャールズを始めたことで問題は消えました。Charlesの使用を提案しているstackoverflow.com/a/26066764/598057を参照してください。非常に奇妙ですが動作します...
スタニスラフパンケビッチ

231

この正確なエラーが発生したため、以下のHTTP実装の問題が判明しましたNSURLRequest

私たちが知る限りでは、iOS 8/9/10/11がKeep-Aliveヘッダー付きのHTTP応答を受信すると、この接続は後で再利用するために(必要に応じて)保持されtimeoutますが、 Keep-Aliveヘッダー(接続は常に30秒間存続しているようです。)次に、2番目のリクエストが30秒以内にアプリによって送信されると、サーバーによってドロップされた可能性のある接続を再利用しようとします(実際よりも多くKeep-Alive経過した場合)。

これまでに見つけたソリューションは次のとおりです。

  • サーバーのタイムアウトパラメータを30秒以上に増やします。Keep-Aliveヘッダーで提供された値に関係なく、サーバーが接続を30秒間開いたままにするかのように、iOSは常に動作しているようです。(これは、KeepAliveTimeoutオプションを設定することでApacheに対して実行できます。
  • アプリのユーザーエージェントに基づいてiOSクライアントのキープアライブメカニズムを無効にすることができます(例:Apacheの場合:BrowserMatch "iOS 8\." nokeepalivemodファイルsetenvif.conf
  • サーバーへのアクセス権がない場合は、Connection: closeヘッダーを使用してリクエストを送信してみてください。これにより、サーバーに接続をただちに破棄し、キープアライブヘッダーなしで応答するよう指示します。しかし、現時点ではConnection、リクエストが送信されたときにNSURLSessionがヘッダーをオーバーライドするようです(Apacheの構成を調整できるため、このソリューションは広範囲にわたってテストしていません)。

7
これは問題を実証する典型的なプロジェクトであり、バグレポートもアップルに提出されています。cl.ly/Xgkl/keep-alive-fail.zipプロジェクトを起動し、最初の投稿ボタン(画面上部)をクリックし、5秒待ってからもう一度クリックしてください。エラーです。
Dimillian 2014

5
キープアライブは双方向です。クライアントはデフォルトでhttpヘッダー「Connection:Keep-Alive」を追加します。クライアント要求にキープアライブパラメータを追加すると役立つ場合があります。例:「Keep-Alive:max = 1」。Arthurのコメントは非常に役立ちますが、iOS8シミュレーターのネットワーキングに複数の問題があることも示しています。リクエストを送信する前にhttpが失敗したため、httpsを使用して接続を取得する必要があります。
ptc

5
こんにちは、私はデバイスでこれとまったく同じ問題を抱えています。これに対する修正はありますか?iOS 7でも問題ありません。
Andres C

9
ヒント:NSURLErrorNetworkConnectionLostハードコーディングの代わりに定数を使用できます-1005
Vincent Tourraine

6
この問題はまだiOS 11.2.6に存在します。
マカレル2018年

47

私の場合Resetting content and settings、シミュレーターが動作します。シミュレータをリセットするには、次の手順に従います。

iOSシミュレーター->コンテンツと設定をリセット->リセットを押してください(警告が表示されたら)


29

iOS 8.0シミュレータランタイムにはバグがあり、シミュレートされたデバイスの起動中にネットワーク構成が変更された場合、シミュレートされたランタイムの上位レベルのAPI(例:CFNetwork)は、ネットワーク接続が失われたと見なします。現在、推奨される回避策は、ネットワーク構成が変更されたときに、シミュレートされたデバイスを再起動することです。

この問題の影響を受ける場合は、http: //bugreport.apple.comで追加の重複レーダーを提出して優先順位を上げてください。

ネットワーク構成を変更せずにこの問題が発生した場合、それは既知のバグではありません。問題が既知のネットワーク構成変更バグではないことを示すレーダーを確実に提出する必要があります。


7
私もデバイスでこの問題を抱えています。
ダレン

@darrenそれは私が言及していた問題ではありません。レーダーを提出することをお勧めします。
ジェレミーハドルストンセコイア2014

4
レーダーIDを含めて、重複を簡単に提出できるようにしてください
Daniel Galasko

11

私の問題を解決したのは、シミュレーターを再起動し、コンテンツと設定をリセットすることでした。


また、シミュレータがリセットされる前にアプリを強制終了し、Macを再起動することもできます。Wi-Fiスポットが異なる場所を頻繁に変更しますが、これは問題を解決するための手順です。
ウラジミール・Slavík

11

また、iOS 8シミュレーターで実行すると、ベータ5およびAFNetworking 1.3で問題が発生し、接続エラーが発生します。

Domain = NSURLErrorDomain Code = -1005「ネットワーク接続が失われました。」

同じコードがiOS 7および7.1シミュレータで正常に動作し、私のデバッグプロキシは、接続が実際に試行される前に失敗が発生することを示します(つまり、要求がログに記録されません)。

NSURLConnectionの失敗を追跡し、バグをAppleに報告しました。添付画像の5行目を参照してください。

NSURLConnectionクライアントデリゲートはエラーに失敗しました

使用を変更するhttpsと、断続的なエラーが発生しますが、iOS 8シミュレーターからの接続が可能になります。

Xcode 6.01(gm)にはまだ問題があります。


NSURLSessionとNSURLConnectionでも同じ問題が発生します。これは、AFNetworkingの問題を除外します。また、httpsでは機能し、httpでは失敗することもわかりました。それでも解決策は見つかりませんでした。解決策はありましたか?
VoidStack 2014

バグ(18072300)がhttpsの動作に関するコメントを追加するため、解決策は報告されていません。これは良い情報です。
ptc 2014

ここにバグのリンクを貼り付けてもらえますか?おかげで私は同じ問題を抱えているが、私は唯一のNSURLConnection(および代表者)を使用すると思うので、私は同じエラーメッセージを取得
szuniverse

Appleのバグレポートを共有できません。まだ開いていて、XCODE 6ベータ7でも引き続き存在します。バグレポートを提出すると、優先順位の向上にも役立ちます。
ptc

この問題はiOSシミュレーターで発生しているようで、実際のデバイスでは問題なく機能します。さらにデバッグしたところ、iOSシミュレータのポートに関する問題が見つかりました。httpsポート443は正常に機能し、httpには8080を使用していたため、失敗していました。他のポートを使用してみましたが、iOSシミュレーターでhttpを呼び出すことができました。ベータ版のXcode 6のバグ、安定したXcodeの6を待つ必要のように見える
VoidStack

10

Alamofireの使用中にこの問題が発生していました。私の間違いは[:]、パラメーターをGET送信nilするのではなく、リクエストでパラメーターの空の辞書を送信していたことでした。

お役に立てれば!


空のボディディクショナリ[:]でGETおよびPOSTを実行すると、このエラーがランダムに発生します。私はバックエンドのREST APIにPython Flaskを使用していますが、これも役立つ場合があります。
Mahmoud Fayez 2018

10

Charlesを開くと問題が解決しましたが、これは非常に奇妙に見えます...

Charlesは、開発者がマシンとインターネット間のすべてのHTTPおよびSSL / HTTPSトラフィックを表示できるようにするHTTPプロキシ/ HTTPモニター/リバースプロキシです。これには、リクエスト、レスポンス、HTTPヘッダー(Cookieとキャッシュ情報を含む)が含まれます。


1
これは私にとっても機能します。charlesはssl証明書を使用してsumulatorリクエストをプロキシするため、httpsを使用するのと同じようなトリックを実行します
thisispete

1
これはいつも私にとってうまくいきます!30回試してみましたが、30回のうち30回は機能しました。
jdog 2014年

2
Charlesは、マシンからのトラフィックを監視できるプロキシツールです。詳細については、charlesproxy.comを確認してください。Charles SSL証明書は、ネットワーク要求を行うシミュレータの機能を台無しにする可能性があります。
Colin Tremblay

@ColinTremblay私はあなたのシミュレータ/デバイスがプロキシを使用するように構成されていると思います。プロキシの削除も機能します。
bikram990 2016

途方もなく、これも私のために働いた。Charlesを開いてからiOSシミュレータの設定をリセットする必要がありました。
マットアンドリュース

6

Githubの1月5日のpjebsコメントを参照してください。

方法1:

if (error.code == -1005)
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

        dispatch_group_t downloadGroup = dispatch_group_create();
        dispatch_group_enter(downloadGroup);
        dispatch_group_wait(downloadGroup, dispatch_time(DISPATCH_TIME_NOW, 5000000000)); // Wait 5 seconds before trying again.
        dispatch_group_leave(downloadGroup);
        dispatch_async(dispatch_get_main_queue(), ^{
            //Main Queue stuff here
            [self redoRequest]; //Redo the function that made the Request.
        });
    });

    return;
}

また、サイトに再接続することを提案する人もいます。

つまり、POSTリクエストを2回実行する

解決策:メソッドを使用してサイトに接続し、戻り(id)、ネットワーク接続が失われた場合は同じメソッドを使用して戻ります。

方法2

-(id) connectionSitePost:(NSString *) postSender Url:(NSString *) URL {
     // here set NSMutableURLRequest =>  Request

    NSHTTPURLResponse *UrlResponse = nil;
    NSData *ResponseData = [[NSData alloc] init];

    ResponseData = [NSURLConnection sendSynchronousRequest:Request returningResponse:&UrlResponse error:&ErrorReturn];

     if ([UrlResponse statusCode] != 200) {

          if ([UrlResponse statusCode] == 0) {

                  /**** here re-use method ****/
                  return [self connectionSitePost: postSender Url: URL];
          }

     } else {
          return ResponseData;
     }

}

方法1は私に大いに役立ちます。ありがとう
Abhishek Mitra

4

このエラーも発生しましたが、シミュレータではなく実際のデバイスで発生しました。HTTPS(gunicornサーバー)でherokuバックエンドにアクセスし、大きな本文(64Kb以上)でPOSTSを実行すると、エラーに気付きました。認証にはHTTP Basic Authを使用しましたがdidReceiveChallenge:、NSURLSessionでデリゲートメソッドを使用せずに、を追加して認証を元のリクエストヘッダーに焼き付けることでエラーが解決されたことに気付きましたAuthentiation: Basic <Base64Encoded UserName:Password>。これにより、必要な401がdidReceiveChallenge:デリゲートメッセージをトリガーし、後続のネットワーク接続が失われるのを防ぎます。


貴重なコメントありがとうございました。64 kb以下の画像のbase64文字列をアップロードすると、正常にアップロードされます。
Vinayak Bhor

3

同じ問題がありました。解決策はシンプルで、を設定しましHTTPBodyたが、に設定HTTPMethodしていませんPOST。これを修正した後、すべてがうまくいきました。


3

私も同じ問題を抱えていました。AFNetworkingがhttpsリクエストを実装する方法はわかりませんが、NSURLSessionのキャッシュの問題が原因です。

アプリケーションがSafariから追跡し直してからhttpリクエストを送信すると、「http load failed 1005」エラーが表示されます。の使用を停止した"[NSURLSession sharedSession]"が、構成可能なNSURLSessionインスタンスを使用して次のように「dataTaskWithRequest:」メソッドを呼び出すと、問題は解決します。

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
config.URLCache = nil;
self.session = [NSURLSession sessionWithConfiguration:config];

設定を忘れないでくださいconfig.URLCache = nil;


1
デバイス/シミュレーターを再起動するか、データをリセットするすべての人がこの答えを調べる必要があると思います。私にとって、彼らのすべての行動はキャッシュをクリアするようで、実際に問題を修正しています。したがって、おそらくURLキャッシュの問題です。これからテストします。
Kamran Khan

2

これを機能させるには、XCodeを終了し、DerivedDataフォルダーの内容(〜/ Library / Developer / Xcode / DerivedDataまたは/ Library / Developer / Xcode / DerivedData)を削除して、シミュレーターを終了する必要がありました。


1
そのリストの唯一の関連アクションは、シミュレーターの再起動でした。Xcodeの再起動と派生データの削除は過剰です。
ジェレミーハドルストンセコイア

2

この問題もiOS 8デバイスで実行しています。詳細はこちらで、iOSがすでにタイムアウトした接続を使用しようとした場合のようです。私の問題は、そのリンクで説明されているキープアライブの問題と同じではありませんが、同じ最終結果のようです。

エラー-1005を受け取るたびに再帰ブロックを実行することで問題を修正しました。これにより、接続が機能する前に再帰が100回以上ループする場合がありますが、実行にわずか2秒しか追加されない場合でも、最終的に接続は通過します。時間と私はそれがデバッガが私のためにNSLogを出力するのにかかる時間に過ぎないと思う。

AFNetworkingで再帰ブロックを実行する方法は次のとおりです。このコードを接続クラスファイルに追加します

// From Mike Ash's recursive block fixed-point-combinator strategy https://gist.github.com/1254684
dispatch_block_t recursiveBlockVehicle(void (^block)(dispatch_block_t recurse))
{
    // assuming ARC, so no explicit copy
    return ^{ block(recursiveBlockVehicle(block)); };
}
typedef void (^OneParameterBlock)(id parameter);
OneParameterBlock recursiveOneParameterBlockVehicle(void (^block)(OneParameterBlock recurse, id parameter))
{
    return ^(id parameter){ block(recursiveOneParameterBlockVehicle(block), parameter); };
}

次に、このように使用します。

+ (void)runOperationWithURLPath:(NSString *)urlPath
            andStringDataToSend:(NSString *)stringData
                    withTimeOut:(NSString *)timeOut
     completionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    OneParameterBlock run = recursiveOneParameterBlockVehicle(^(OneParameterBlock recurse, id parameter) {
        // Put the request operation here that you want to keep trying
        NSNumber *offset = parameter;
        NSLog(@"--------------- Attempt number: %@ ---------------", offset);

        MyAFHTTPRequestOperation *operation =
            [[MyAFHTTPRequestOperation alloc] initWithURLPath:urlPath
            andStringDataToSend:stringData
            withTimeOut:timeOut];

        [operation setCompletionBlockWithSuccess:
            ^(AFHTTPRequestOperation *operation, id responseObject) {
                success(operation, responseObject);
            }
            failure:^(AFHTTPRequestOperation *operation2, NSError *error) {
                if (error.code == -1005) {
                    if (offset.intValue >= numberOfRetryAttempts) {
                        // Tried too many times, so fail
                        NSLog(@"Error during connection: %@",error.description);
                        failure(operation2, error);
                    } else {
                        // Failed because of an iOS bug using timed out connections, so try again
                        recurse(@(offset.intValue+1));
                    }
                } else {
                    NSLog(@"Error during connection: %@",error.description);
                    failure(operation2, error);
                }
            }];
        [[NSOperationQueue mainQueue] addOperation:operation];
    });
    run(@0);
}

私はAFHTTPRequestOperationサブクラスを使用していますが、独自の要求コードを追加していることがわかります。重要な部分はrecurse(@offset.intValue+1));、ブロックが再び呼び出されるようにするための呼び出しです。


MyAFHTTPRequestOperationクラスとは何ですか?
jdog 2014年

単なるAFHTTPRequestOperationサブクラスです。タイムアウトや認証などの事前定義に使用します。
Darren

2

デバイスで問題が発生している場合は、トラフィックがプロキシを経由しているかどうかを確認します([設定]> [Wi-Fi]>(情報)> HTTPプロキシ)。Charlesで使用するようにデバイスをセットアップしましたが、プロキシについて忘れていました。Charlesが実際に実行されていないと、このエラーが発生するようです。


2

バックエンドサーバーにファイルをアップロードしているときに誰かがこのエラーを受け取った場合は、受信サーバーに、メディアで許容される最大コンテンツサイズがあることを確認してください。私の場合、NGINXにはもっと高い値が必要でしたclient_max_body_size。NGINXはアップロードが完了する前にリクエストを拒否するため、エラーコードは返されません。


2

Xcode 6.2ベータ版を使用していたときに、iOS 7デバイスでエラーが発生しました。

Xcode 6.2ベータ版から6.1.1に切り替えると、少なくともiOS 7デバイスで問題が解決しました。


解決すべきことはないと思います。基盤となるOSが正当な理由で接続を切断します。アプリはそれに対処する準備をする必要があります(オフラインで作業するなど)。もちろん、特定のxcodeバージョンのSDKはバグがないと仮定します。私の回答が示唆しているように、6.2にはバグがあり、6.1.1には問題がありませんでした。7.0.1がアルファグレードのソフトウェアである一方で、xcode 6.4がかなり安定しているように見える場合、同様のことが確認できます。またはそうです。
アントン・トロパシュコ2015年

2

2017-01-25、アップルこのエラーに関する技術的なQ&Aをリリースしました:

AppleテクニカルQ&A QA1941

「ネットワーク接続が失われました」エラーの処理

A:NSURLErrorNetworkConnectionLostはNSURLErrorDomainエラードメインのエラー-1005であり、ユーザーに「ネットワーク接続が失われました」と表示されます。このエラーは、HTTP要求の処理中に、HTTP要求を伝送している基になるTCP接続が切断されたことを意味します(詳細については、以下を参照してください)。状況によっては、NSURLSessionがそのような要求を自動的に再試行する場合があります(特に、要求がべき等である場合)。ただし、HTTP標準では許可されていない状況もあります。

https://developer.apple.com/library/archive/qa/qa1941/_index.html#//apple_ref/doc/uid/DTS40017602


1

問題が数カ月続き、最終的にAPIドメインでDNSSECを無効にすると、すべてが問題ないことがわかりました:simple_smile:


2
詳しく説明してもらえますか?
Groot 2015

1

VPN経由で接続していました。VPNを無効にすることで問題は解決しました。


1

リクエストのHTTPMethodを設定せずに NSURLRequestをNSURLSessionに渡すと、このエラーが発生しました。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlComponents.URL];

エラードメイン= NSURLErrorDomainコード= -1005「ネットワーク接続が失われました。」

HTTPMethodただし、を追加すると、接続は正常に機能します

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlComponents.URL];
[request setHTTPMethod:@"PUT"];

1

他のアプリ(Safariなど)からリクエストできるかどうかをテストします。そうでない場合は、コンピュータ上にある可能性があります。私の場合、アバストアンチウイルスでこの問題があり、シミュレーターのリクエストがブロックされていました(理由は聞かないでください)。


1

コンピュータを再起動すると、Xcode9.1で問題が解決しました。シミュレータとXcodeを再起動しましたが、動作しません。


1

私は同じ問題に直面していました、アプリの遅いネットワークテストのためにNetwork Link Conditionerを有効にしました。それによってこのエラーが発生することがありましたSettings > Developer > Network Link Conditioner。から無効にすると、問題が解決しました。

ここに画像の説明を入力してください

これが誰かを助けることを願っています。


1

すべての回答に加えて、私は1つの素晴らしい解決策を見つけました。実際、iOS 12 onwordのネットワーク接続に関連する問題は、iOS 12.0 onwordにバグがあるためです。そして、それはまだ解決されていません。アプリがバックグラウンドから来てネットワークコールを行おうとして接続確立に失敗したとき、AFNetworking関連の問題でgitハブコミュニティを通過しました。私はこれに3日間費やし、この原因を突き止めるために多くのことを試みましたが、何も見つかりませんでした。最終的に私はこのブログを赤くしたときに暗闇の中でいくつかの光を得ましたhttps://github.com/AFNetworking/AFNetworking/issues/4279

iOS 12にはバグがあるということです。基本的に、アプリがフォアグラウンドにない場合、ネットワーク呼び出しが完了することは期待できません。このバグにより、ネットワークコールがドロップされ、ログでネットワーク障害が発生します。

アプリへのバックグラウンドからフォアグラウンドへの移行時にネットワークコールが発生している場合は、遅延を提供することをお勧めします。ディスパッチのそのネットワーク呼び出しを少し遅れて非同期にします。ネットワークコールのドロップや接続の切断は発生しません。

まだ修正されていないので、Appleがこの問題をiOS 12で解決するのを待ってはいけません。NSURLConnection、NSURLSession、AFNetworking、またはALAMOFIREであるネットワークリクエストに遅延を提供することにより、この回避策を使用できます。乾杯:)


1

私の場合は、HTTPに接続していて、HTTPSで実行されていたためです


0

次の理由でこの問題が発生していました。

TLDR:プロパティGETではなくURLでパラメーターを送信する必要があるリクエストを送信しているかどうかを確認しNSURLRequest's HTTBodyます。

==================================================

私は自分のアプリにネットワークアブストラクションをマウントしましたが、すべてのリクエストに対してかなりうまく機能していました。

新しいリクエストを別のWebサービス(自分のものではない)に追加したところ、このエラーが発生し始めました。

私は遊び場に行き、最低限のリクエストを構築することから始めました。そのため、原因を見つけるまで、自分の抽象概念に近づき始めました。

私の抽象化の実装にはバグがありました。URLにエンコードされたパラメーターを送信するはずのリクエストを送信しNSURLRequest's HTTBodyていました。また、クエリパラメーターでプロパティも入力していました。私がHTTPBodyそれを取り除くとすぐにそれは機能しました。


0

このエラーを受け取り、アプリケーションPostmanも低下しているが、アプリのAdvanced Rest Client(ARC)で動作していて、Androidで動作していることにも気付きました。したがって、通信をデバッグするためにCharlesをインストールする必要があり、応答コードが-1であることに気付きました。問題は、RESTプログラマーが応答コード200を返すのを忘れたことでした。

これが他の開発者に役立つことを願っています。


0

エラー-1005が発生するたびに、APIを再度呼び出す必要があります。

AFHTTPRequestOperationManager *manager = 
[AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:<example-url>
   parameters:<parameteres>
    success:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(@“Success: %@", responseObject);
  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
      NSLog(@"Error: %@", error);
      if (error.code == -1005) {
          // Call method again... 
       }
  }];

関数を再度呼び出すには、コードを追加する必要があります。MakeSureがメソッドを1回呼び出したことを確認します。それ以外の場合は、その呼び出し再帰ループです。


0

物理デバイスを使用してiOS 12アプリから会社のサーバーを使用して通話しているときに、同じ問題に直面しました。問題は、サーバーのハードディスクがいっぱいだったことです。サーバーの空き容量を増やすことで問題は解決しました。

Apple(URLSession.timeoutIntervalForRequestおよびURLSession.timeoutIntervalForResource)が提供する標準のネットワークAPIを介してパラメーター化できないタイムアウトが原因であると私が思う別の状況で同じエラーを見つけました。そこにさえ..サーバーの答えが速くなった問題を解決

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.