問題タブ [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.
objective-c - NSHTTPURLResponse に HTTPVersion を提供する
私のアプリケーションはカスタムNSURLProtocol
サブクラスを使用します。NSHTTPURLResponse
いくつかのヘッダー フィールドを変更して、自分のコピーで置き換える必要があります。したがって、次のように新しいNSHTTPURLResponse
インスタンスを作成します。
パラメータに問題が発生していHTTPVersion
ます。元の応答からこの値を取得する方法が見つかりませんでした。
ドキュメントには次のように記載されています。
これは通常、「HTTP/1.1」として表されます。
しかし、ハードコードされた値を提供することは、常に正しく機能するソリューションのようには見えません。
これで私を助けてください。
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 によって非表示になっていると推測されます。
しかし、それは私に他の多くの問題を与えます...
誰かに同様の問題や入力がありましたか?
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.AuthenticationMiddleware
1.<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.AuthenticationMiddleware
1.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 でアクセスするにはどうすればよいですか?dataTaskWithRequest
data
error
nil
ios - 指定された NSHTTPURLResponse から HTTP プロトコルのバージョンを取得する方法は?
ドキュメントから、バージョンNSHTTPURLResponse
を取得する方法が見つかりませんでした。HTTP
(i.e. "HTTP/1.1" or "HTTP/1.0")
HTTP
ヘッダー フィールドは、すべてのヘッダー フィールド プロパティから使用できますが、HTTP
プロトコル バージョンはヘッダーではないため、ヘッダー フィールド内には表示されませんHTTP
。
注: init、NSHTTPURLResponse
イニシャライザ
(initWithURL:statusCode:HTTPVersion:headerFields:)
は入力として を必要とするHTTPVersion
ため、理論的にはそこに保存されている可能性があります。
ただし、HTTPVersion
NSURLSessionDataTask から返された応答など、特定の応答から取得するためのプロパティまたはメソッドが見つかりませんでした。
ios - すぐにブロックで結果を取得する方法は?
ブロックを使用して、あるクラスの応答からヘッダー フィールドを取得していますが、それを別のクラスで取得する必要があります。
このようなコードを実装しました
ファーストクラスで:
userAuthentication クラス:
ここで私の問題は、私がdict
nullとして取得しているファーストクラスにあります。
クラスでもuserAuthentication
私はnullになっています。
しかし、しばらくすると、コールバック メソッドが呼び出され、応答が正しく表示されcompletionHandler
ます。
では、firstClass で応答を取得するにはどうすればよいでしょうか。
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.
nshttpcookie - HTTPURLResponse から Set-Cookie ヘッダーを複製する
後続のリクエストを認証するための Cookie を取得するために API にアクセスしています。この応答ヘッダーのコレクションから Cookie を取得する必要があります。
次の Cookie を取得する必要があります。
ヘッダーを解析してその Cookie を返したいのですが、次のコードは不要な Cookie のみを表示します。
上記のコードは、次の出力を生成します。
不要な値は、返されたヘッダーのディクショナリで必要なSet-Cookie
値を置き換える必要があります。必要な値を置き換える前にSet-Cookie
取得する方法はありますか?Set-Cookie
nshttpurlresponse - HTTPURLResponse に対して「nil」を返すにはどうすればよいですか?
応答ヘッダーから Cookie を取得するために使用した次のメソッドがあります。
nil
コードが適切なシナリオで返されることを確認する単体テストを作成しています。ただし、効果的にテストできないと思われる上記の方法の唯一の部分は次のとおりです。
私のテストでは、上記のメソッドに渡す応答を作成します。
の初期化子にHTTPURLResponse
はオプションではない が必要であるため、そのプロパティの値でURL
応答をテストする方法がわかりません。nil
url
これを でテストする方法はありnil
url
ますか?