リダイレクトに従うようにNSURLSessionをセットアップしました。デリゲートはリダイレクトをキャッチし、dataTaskWithRequestを使用してNSURLSessionDataTaskを作成し、その引数としてwillPerformHTTPRedirectionのリダイレクトを作成します。これは、(以下ログを参照)、この奇妙なことをしてルータを除いて、私のネットワーク上のすべてのために素晴らしい作品:NSURLSessionリダイレクトエラー
- [NSURLSession] willPerformHTTPRedirection: <NSURLRequest: 0x60000000d500> { URL: http://192.168.1.1:80:8000/, Method GET, Headers {
Accept = (
"*/*"
);
"Accept-Encoding" = (
"gzip, deflate"
);
"Accept-Language" = (
"en-us"
);
} }
- [NSURLSession] willPerformHTTPRedirection: <NSURLRequest: 0x60000000d540> { URL: http://192.168.1.1:80:8000:8000/, Method GET, Headers {
Accept = (
"*/*"
);
"Accept-Encoding" = (
"gzip, deflate"
);
"Accept-Language" = (
"en-us"
);
} }
-[NSURLSession] willPerformHTTPRedirection: <NSURLRequest: 0x60000000d6b0> { URL: http://192.168.1.1:80:8000:8000:8000/, Method GET, Headers {
Accept = (
"*/*"
);
"Accept-Encoding" = (
"gzip, deflate"
);
"Accept-Language" = (
"en-us"
);
} }
は、基本的にはアドレスの最後にリダイレクトポートを追加し続けています。なぜこれをやっているのか分かりません。他のすべてのアドレス(30人以上)は、期待どおりに動作し、最後までのすべてのリダイレクトに従います。私は最大10のリダイレクトを設定しようとしていますが、これは起こってはいけません。誰でもこれを引き起こす可能性のあることは考えていますか?
ここにcurlの結果があります。 ... 1.115はうまく動作しますが、1.1は動作しません。カールの結果によると、私が気づく主な違いは、115上のLocationがポートをドロップし、その後にリダイレクトを追加し、1.1がポートを変更することです。私は... 1.1に接続しようとしましたが、ポートやリダイレクトは正しく機能しませんでしたが、残念ながら私のコードではポートが文字列の一部である必要があります。
Error: Error Domain=NSURLErrorDomain Code=-1007 "too many HTTP redirects" UserInfo={NSUnderlyingError=0x604000c4bcd0 {Error Domain=kCFErrorDomainCFNetwork Code=-1007 "(null)"}, NSErrorFailingURLStringKey=http://192.168.1.1:80:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000/, NSErrorFailingURLKey=http://192.168.1.1:80:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000:8000/, NSLocalizedDescription=too many HTTP redirects}
リダイレクトを処理するコードを送信します。これはそのメソッドのバグのようです。 – dgatwood
@dgatwoodコードを追加しました。私はこのメソッドのデフォルト完了ハンドラを使用しています。他のすべてのデバイスで正常に動作します。 – Thomas
さて、ここでポート番号を追加するコードを見てみましょう。 – dgatwood