問題タブ [nshttpurlresponse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
900 参照

objective-c - NSHTTPURLResponse に HTTPVersion を提供する

私のアプリケーションはカスタムNSURLProtocolサブクラスを使用します。NSHTTPURLResponseいくつかのヘッダー フィールドを変更して、自分のコピーで置き換える必要があります。したがって、次のように新しいNSHTTPURLResponseインスタンスを作成します。

パラメータに問題が発生していHTTPVersionます。元の応答からこの値を取得する方法が見つかりませんでした。

ドキュメントには次のように記載されています。

これは通常、「HTTP/1.1」として表されます。

しかし、ハードコードされた値を提供することは、常に正しく機能するソリューションのようには見えません。

これで私を助けてください。

0 投票する
0 に答える
1526 参照

ios - WKWebview がログイン Cookie を失う

現在、WKWebView を使用して Web ページを表示するハイブリッド アプリケーションに問題があります。

アプリケーションが再起動して新しいセッション / WKWebWiew を作成した後、Web サービスから WKWebView に新しいログイン Cookie が与えられます。これは 3 回の試行のうち 2 回は正常に機能しますが、場合によっては、ログイン Cookie が WKWebView によって使用される共有 Cookie ストレージ (NSHTTPCookieStorage) に保存されません。

(UIWebview で同じ Web サービスを使用すると正常に動作します)

ネットワーク分析ツールを試してみましたが、Web サービスが新しい Cookie を送信していることがわかります。何らかの理由で、WKWebView / NSURLRequest は更新されたログイン Cookie を保存しません。WKWebView はスケジュールされた間隔で Cookie を更新するようであり、WKProcessPool を更新することで強制的に更新できることを読みましたが、成功しませんでした。

以下を使用して、Web サービスからログイン Cookie を読み取ろうとしています。

しかし、何らかの理由でセッション Cookie / ログイン Cookie がヘッダーに表示されず、次のように設定して自動 Cookie 処理をオフにすると表示されるため、何らかの理由で NSURL によって非表示になっていると推測されます。

しかし、それは私に他の多くの問題を与えます...

誰かに同様の問題や入力がありましたか?

0 投票する
1 に答える
1320 参照

nsurlsession - NSURLSession の 500 エラーからの応答データはどこにありますか?

iOS アプリに次の Swift コードがあります。

Web サービス API への呼び出しが成功すると、これresponse!.statusCodeは正常に機能します。正しく設定さdataれ、完了ハンドラーに渡された は、JSON から有用なオブジェクトに解析できます。

ただし、サーバーの応答が 500 などのエラーの場合dataは、0 バイトであり、応答の本文ではなくヘッダー情報しか表示されません。

プロキシ アプリケーションCharlesを使用してシミュレーターから収集した応答の例を次に示します。

HTTP/1.1 500 内部サーバー エラー
Transfer-Encoding: チャンク
サーバー: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=00000000000000000008888888888888888888888aaaaaaaaaaaaaaaaa;Path=/;Domain=blah-testing.azurewebsites.net
Date : 2016 年 7 月 21 日 (木) 05:57:44 GMT

{"ExceptionType":"Exception","Message":"Not on your Nelly","StackTrace":" D:\Users\timregan\Source\Repos\ServerSideCode\Blah の Blah.Controllers.CustomersController.Get() で\ApiControllers\CustomersController.cs: 37 行目\r\n at lambda_method(Closure , Object , Object[] )\r\n at Microsoft.AspNetCore.Mvc.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)\ r\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext()\r\n--- 例外がスローされた前の場所からのスタック トレースの終わり ---\r\n at System.Runtime.ExceptionServices .ExceptionDispatchInfo.Throw()\r\n at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__18.MoveNext()\r\n--- 例外がスローされた前の場所からのスタック トレースの終わり ---\r\システムで n。Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスク タスク)\r\n で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)\r\n で System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n でMicrosoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- 例外がスローされた前の場所からのスタック トレースの終わり ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) で\r\n System.Runtime.CompilerServices.TaskAwaiter.GetResult() で\r\n Microsoft.AspNetCore.Authentication.AuthenticationMiddleware でHandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- スタック トレースの終了例外がスローされた前の場所から ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスク タスク) で\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク) で\r\n System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n で Microsoft.AspNetCore.Authentication.AuthenticationMiddleware でHandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n at Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()\r\n--- スタック トレースの終了例外がスローされた前の場所から ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスク タスク) で\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク) で\r\n System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n で Microsoft.AspNetCore.Authentication.AuthenticationMiddleware でTaskAwaiter.ThrowForNonSuccess(タスク タスク)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク) で\r\n System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n で Microsoft.AspNetCore. Authentication.AuthenticationMiddlewareTaskAwaiter.ThrowForNonSuccess(タスク タスク)\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク) で\r\n System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n で Microsoft.AspNetCore. Authentication.AuthenticationMiddleware1.<Invoke>d__18.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware1.d__18.MoveNext()\r\n--- 例外がスローされた前の場所からのスタック トレースの終わり ---\r\n System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) で\r\n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n で Blah.Startup.<>c.<b__6_0>d.MoveNext() で D:\Users\timregan\Source\Repos\ServerSideCode\Blah \Startup.cs:59行目","StatusCode":500}

しかし、Xcode では、同じ応答がはるかに少なくなります。ヘッダー要素はすべてオブジェクトにありますが、完了ハンドラーNSHTTPURLResponseへの他のパラメーターには何もありません: is 0 バイトとisです。サーバー エラー スタック トレースを含む応答の本文はどこにあるのでしょうか? Swift でアクセスするにはどうすればよいですか?dataTaskWithRequestdataerrornil

0 投票する
2 に答える
1866 参照

ios - 指定された NSHTTPURLResponse から HTTP プロトコルのバージョンを取得する方法は?

ドキュメントから、バージョンNSHTTPURLResponseを取得する方法が見つかりませんでした。HTTP(i.e. "HTTP/1.1" or "HTTP/1.0")

HTTPヘッダー フィールドは、すべてのヘッダー フィールド プロパティから使用できますが、HTTPプロトコル バージョンはヘッダーではないため、ヘッダー フィールド内には表示されませんHTTP

注: init、NSHTTPURLResponseイニシャライザ (initWithURL:statusCode:HTTPVersion:headerFields:)は入力として を必要とするHTTPVersionため、理論的にはそこに保存されている可能性があります。

ただし、HTTPVersionNSURLSessionDataTask から返された応答など、特定の応答から取得するためのプロパティまたはメソッドが見つかりませんでした。

0 投票する
5 に答える
169 参照

ios - すぐにブロックで結果を取得する方法は?

ブロックを使用して、あるクラスの応答からヘッダー フィールドを取得していますが、それを別のクラスで取得する必要があります。

このようなコードを実装しました

ファーストクラスで:

userAuthentication クラス:

ここで私の問題は、私がdictnullとして取得しているファーストクラスにあります。

クラスでもuserAuthentication私はnullになっています。

しかし、しばらくすると、コールバック メソッドが呼び出され、応答が正しく表示されcompletionHandlerます。

では、firstClass で応答を取得するにはどうすればよいでしょうか。

0 投票する
10 に答える
6917 参照

ios - HTTPURLResponse allHeaderFields Swift 3 Capitalisation

Converting to Swift 3 I noticed a strange bug occur reading a header field from HTTPURLResponse.

#xA;

no longer worked.

I printed out the all headers dictionary and all my header keys seem to be in Sentence case.

According to Charles proxy all my headers are in lower case. According to the backend team, in their code the headers are in Title-Case. According the docs: headers should be case-insensitive.

So I don't know which to believe. Is anyone else finding in Swift 3 that their headers are now being turned into Sentence case by iOS? If so is this behaviour we want?

Should I log a bug with Apple or should I just make a category on HTTPURLResponse to allow myself to case insensitively find a header value.

0 投票する
0 に答える
274 参照

nshttpcookie - HTTPURLResponse から Set-Cookie ヘッダーを複製する

後続のリクエストを認証するための Cookie を取得するために API にアクセスしています。この応答ヘッダーのコレクションから Cookie を取得する必要があります。

次の Cookie を取得する必要があります。

ヘッダーを解析してその Cookie を返したいのですが、次のコードは不要な Cookie のみを表示します。

上記のコードは、次の出力を生成します。

不要な値は、返されたヘッダーのディクショナリで必要なSet-Cookie値を置き換える必要があります。必要な値を置き換える前にSet-Cookie取得する方法はありますか?Set-Cookie

0 投票する
1 に答える
170 参照

nshttpurlresponse - HTTPURLResponse に対して「nil」を返すにはどうすればよいですか?

応答ヘッダーから Cookie を取得するために使用した次のメソッドがあります。

nilコードが適切なシナリオで返されることを確認する単体テストを作成しています。ただし、効果的にテストできないと思われる上記の方法の唯一の部分は次のとおりです。

私のテストでは、上記のメソッドに渡す応答を作成します。

の初期化子にHTTPURLResponseはオプションではない が必要であるため、そのプロパティの値でURL応答をテストする方法がわかりません。nilurl

これを でテストする方法はありnil urlますか?