問題タブ [nsurlprotocol]
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.
ios - NSURLプロトコルのタイムアウトが速すぎる
私は、StopLoading が 1 秒以内に呼び出されることを観察しました。リクエストを処理するのに十分な時間がありません。
他の誰かが以前に同様の行動に遭遇したことがありますか? この問題の解決策はありますか?
ios - NSURLSessionTask 認証チャレンジの完了ハンドラーと NSURLAuthenticationChallenge クライアント
カスタム を実装しており、内部ネットワークのデータ タスクで の代わりにNSURLProtocol
使用したいと考えています。NSURLSession
NSURLConnection
NSURLSession
/のチャレンジ ハンドラの内部実装について興味深い問題に遭遇しましたNSURLSessionTask
。
ここでは、基本的に 2 つの異なるチャレンジ ハンドラーが提供されます。1 つは、チャレンジを処理するために必要なすべての情報が提供されるブロックですが、情報オプションとほぼ 1 対 1 で対応するメソッドを持つcompletionHandler
レガシーもあります。NSURLAuthenticationChallenge.client
completionHandler
私はプロトコルを開発しており、特定の認証チャレンジを URL ローディング システムに渡して呼び出し側 API を実装したいので、NSURLSession
クライアント メソッドを使用する必要があります。
completionHandler
私の質問は、 andの内部実装がNSURLAuthenticationChallenge.client
同じかどうかです。もしそうなら、URL 読み込みシステムが適切なメソッドを呼び出すことを期待して、デリゲート メソッドで完了ハンドラーの呼び出しをスキップできますNSURLAuthenticationChallenge.client
か?
ios - NSURL プロトコル。requestIsCacheEquivalent は呼び出されませんでした
ここでの取引が何であるかはわかりませんが、機能は次のとおりです。
NSURLProtocol サブクラス内で呼び出されることはありません。キャッシュが使用されているケースも見てきましたが (ネットワーク プロキシを使用して呼び出しが行われていないことを確認)、このメソッドが呼び出されることはありません。これがなぜなのか途方に暮れています。
私が解決しようとしている問題は、データをキャッシュしたいリクエストがありますが、これらのリクエストにはそれぞれ異なる署名パラメーターがあります (ノンスのようなものです)。これにより、データが同等であるにもかかわらず、キャッシュキーが同じではなくなります。
明示的な詳細に入るには:
- カスタム署名を使用してリクエストを発行します (次のように:
www.example.com?param1=1¶m2=2&signature=1abcdefabc312093
) - リクエストは Etag で返されます
- Etag は NSURLCache によって管理されるはずですが、別の要求 (
www.example.com?param1=1¶m2=2&signature=1abdabcda3359809823
) が行われていると見なされるため、気にしません。
Appleのドキュメントに次のように書かれているため、NSURLProtocolを使用するとすべての問題が解決すると思いました。
aRequest と bRequest がキャッシュ目的で同等である場合は YES、そうでない場合は NO。リクエストは、同じプロトコルによって処理され、実装固有のチェックを実行した後にそのプロトコルが同等であると宣言する場合にのみ、キャッシュの目的で同等と見なされます。
残念ながら、この関数は呼び出されません。何が問題なのかわかりません...
次のように、アプリのデリゲートにプロトコルを登録しました。
次のようにプロトコルをトリガーします。
ios - URLのロード中にNSURLはどのように「コピー」されますか?
のサブクラスを作成していますNSURL
(の提携サブクラスとともにNSURLProtocol
)。URL の読み込みで取得して使用することを意図して、URL オブジェクトに追加のデータ プロパティを意図的に隠しています。(これは単なる実験です。判断しないでください。)
しかし、これらのカスタム URL オブジェクトの 1 つを作成してクラス コンボをテストし、そこからロードしようとすると...
...私の URL プロトコルは、私が作成したインスタンスではなく、検査する実際の NSURL
インスタンスを受け取ります。absoluteString
これは私が期待していることです。つまり、読み込み中の内部が元の URL を新しい URL にコピーしましたが、それは私のカスタム サブクラスではないため、追加のプロパティがありません。
私のサブクラスは、NSCopying コンプライアンスとコンプライアンスの両方を正しくオーバーライドすることにNSURL
注意してください。これにより、クラスのインスタンスの浅いコピーまたは深いコピーを作成する人は、完全で正しいコピーを取得できるようになります。ただし、このプロセス中にこれらのメソッドは呼び出されません。(どちらも、、などではありません)-copyWithZone:
-initWithCoder:
-encodeWithCoder:
NSSecureCoding
absoluteString
path
relativeString
誰かが、私の URL の (文字列) の内容を、私が期待するメソッドを呼び出さずに「コピー」しています。別の Foundation クラスがパブリック インターフェイスをバイパスし、プライベート/内部プロパティにアクセスしてこれを行うことができると思います。
NSURL が基本的にサブクラス化できないかどうか誰でも確認できますか? または、何か不足している可能性がある場合は?
ios - iOS - カスタム NSURLProtocol クラスで AFNetworking を使用する
このチュートリアルNSURLProtocol
class
の助けを借りて実装したカスタムがあります。私の実装は、名前、データモデルなどを除いて、チュートリアルとほとんど同じです...
基本的に、私はHTTP
リクエストを送信しようとしていますが、 URL
「http://」で始まるのではなく、「bla://」で始まる必要があります。
現在、 を登録しprotocol
class
て 経由で使用しようとしていますAFNetworking
framework
が、問題が発生しています。
canInitWithRequest:
メソッドはある時点で NO を返し始め、この時点でリクエストは失敗し、「サポートされていない URL」エラーが発生し続けます。
の登録に加えて、メソッドでこれを呼び出しprotocol
class
てクラスを に追加しようとしました。AFHTTPSessionManager
protocolClasses
didFinishLaunchingWithOptions
また、アプリの info.plist の URL スキーム フィールドに URL スキームを追加しました。
まだ運がない...私がやろうとしていることは可能ですか?もしそうなら、何が欠けているのでしょうか?ありがとう
objective-c - カスタム NSURLProtocol を使用している場合、UIWebView がリダイレクトされたページのコンテンツをロードしない
HTTP リクエストをプロキシするために登録された UIWebView とカスタム NSURLProtocol クラスがあります。github.com の読み込みに問題があります。https://github.comを参照すると、ページとそのコンテンツが正常に読み込まれます。ただし、http://github.comを参照すると、HTML は正しく読み込まれますが、画像や CSS は読み込まれません。https バージョンをロードすると、次のようになります。
http バージョンをロードすると、次のようになります。
この問題を再現するために使用したView Controllerのコードは次のとおりです。
NSURLProtocol の実装は次のとおりです。
カスタム NSURLProtocol クラスを無効にすると、正常に動作します。Charles を使用して HTTP 要求と応答を調べたところ、NSURLProtocol の有無にかかわらず同じように見えます。
問題は、NSURLConnection を使用してページ データを取得するときに、UIWebView が Web ページのコンテンツを要求しないのはなぜですか?
ios - カスタム NSURLProtocol と HTTP プロキシを使用したリダイレクトの処理
プロキシ サーバー経由ですべてのトラフィックをリダイレクトするカスタム URLProtocol があります。
私の現在の作業コードは次のようになります。
これはこれまでのところうまくいきます。問題は、リダイレクトを使用する URL がいくつかあることです。デバイスではなく、プロキシ サーバーでもリダイレクトを実行する必要があります。次のコードを追加しようとしましたが、役に立ちませんでした。
問題は、新しいリクエストがプロキシ サーバーに送信されず、代わりにデバイス自体によってリダイレクトされることです。
ありがとう。
ios - NSURLProtocol - https リクエストを処理する
これは次の場所canInitWithRequest
にありNSURLProtocol
ます。
しかし、 httpsリクエストもNSURLProtocol
許可したいのです。
私はこれを試しましたが、呼び出されるとすべてのリクエストが失敗します:
}
1 つの例は、 httpsスキームを持つログイン要求です。上記の関数ではYESが返されますが、ログイン要求が呼び出されると、ログに次のエラーが表示されます。
エラー Domain=NSURLErrorDomain Code=-1004 「サーバーに接続できませんでした。」
ただし、 httpsのチェックを外すとcanInitWithRequest
、エラーは発生しません。RNCachingURLProtocol
を
使用してリクエストをキャッシュしています。
どうすればこれを達成できますか。