問題タブ [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.

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

ios - NSURLプロトコルのタイムアウトが速すぎる

私は、StopLoading が 1 秒以内に呼び出されることを観察しました。リクエストを処理するのに十分な時間がありません。

他の誰かが以前に同様の行動に遭遇したことがありますか? この問題の解決策はありますか?

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

ios - NSURLSessionTask 認証チャレンジの完了ハンドラーと NSURLAuthenticationChallenge クライアント

カスタム を実装しており、内部ネットワークのデータ タスクで の代わりにNSURLProtocol使用したいと考えています。NSURLSessionNSURLConnection

NSURLSession/のチャレンジ ハンドラの内部実装について興味深い問題に遭遇しましたNSURLSessionTask

ここでは、基本的に 2 つの異なるチャレンジ ハンドラーが提供されます。1 つは、チャレンジを処理するために必要なすべての情報が提供されるブロックですが、情報オプションとほぼ 1 対 1 で対応するメソッドを持つcompletionHandlerレガシーもあります。NSURLAuthenticationChallenge.clientcompletionHandler

私はプロトコルを開発しており、特定の認証チャレンジを URL ローディング システムに渡して呼び出し側 API を実装したいので、NSURLSessionクライアント メソッドを使用する必要があります。

completionHandler私の質問は、 andの内部実装がNSURLAuthenticationChallenge.client同じかどうかです。もしそうなら、URL 読み込みシステムが適切なメソッドを呼び出すことを期待して、デリゲート メソッドで完了ハンドラーの呼び出しをスキップできますNSURLAuthenticationChallenge.clientか?

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

ios - NSURL プロトコル。requestIsCacheEquivalent は呼び出されませんでした

ここでの取引が何であるかはわかりませんが、機能は次のとおりです。

NSURLProtocol サブクラス内で呼び出されることはありません。キャッシュが使用されているケースも見てきましたが (ネットワーク プロキシを使用して呼び出しが行われていないことを確認)、このメソッドが呼び出されることはありません。これがなぜなのか途方に暮れています。

私が解決しようとしている問題は、データをキャッシュしたいリクエストがありますが、これらのリクエストにはそれぞれ異なる署名パラメーターがあります (ノンスのようなものです)。これにより、データが同等であるにもかかわらず、キャッシュキーが同じではなくなります。

明示的な詳細に入るには:

  1. カスタム署名を使用してリクエストを発行します (次のように: www.example.com?param1=1&param2=2&signature=1abcdefabc312093)
  2. リクエストは Etag で返されます
  3. Etag は NSURLCache によって管理されるはずですが、別の要求 ( www.example.com?param1=1&param2=2&signature=1abdabcda3359809823) が行われていると見なされるため、気にしません。

Appleのドキュメントに次のように書かれているため、NSURLProtocolを使用するとすべての問題が解決すると思いました。

aRequest と bRequest がキャッシュ目的で同等である場合は YES、そうでない場合は NO。リクエストは、同じプロトコルによって処理され、実装固有のチェックを実行した後にそのプロトコルが同等であると宣言する場合にのみ、キャッシュの目的で同等と見なされます。

残念ながら、この関数は呼び出されません。何が問題なのかわかりません...

次のように、アプリのデリゲートにプロトコルを登録しました。

次のようにプロトコルをトリガーします。

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

ios - URLのロード中にNSURLはどのように「コピー」されますか?

のサブクラスを作成していますNSURL(の提携サブクラスとともにNSURLProtocol)。URL の読み込みで取得して使用することを意図して、URL オブジェクトに追加のデータ プロパティを意図的に隠しています。(これは単なる実験です。判断しないでください。)

しかし、これらのカスタム URL オブジェクトの 1 つを作成してクラス コンボをテストし、そこからロードしようとすると...

...私の URL プロトコルは、私が作成したインスタンスではなく、検査する実際の NSURLインスタンスを受け取ります。absoluteStringこれは私が期待していることです。つまり、読み込み中の内部が元の URL を新しい URL にコピーしましたが、それは私のカスタム サブクラスではないため、追加のプロパティがありません。

私のサブクラスは、NSCopying コンプライアンスとコンプライアンスの両方を正しくオーバーライドすることにNSURL注意してください。これにより、クラスのインスタンスの浅いコピーまたは深いコピーを作成する人は、完全で正しいコピーを取得できるようになります。ただし、このプロセス中にこれらのメソッドは呼び出されません。(どちらも、、などではありません)-copyWithZone:-initWithCoder:-encodeWithCoder:NSSecureCodingabsoluteStringpathrelativeString

誰かが、私の URL の (文字列) の内容を、私が期待するメソッドを呼び出さずに「コピー」しています。別の Foundation クラスがパブリック インターフェイスをバイパスし、プライベート/内部プロパティにアクセスしてこれを行うことができると思います。

NSURL が基本的にサブクラス化できないかどうか誰でも確認できますか? または、何か不足している可能性がある場合は?

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

ios - iOS - カスタム NSURLProtocol クラスで AFNetworking を使用する

このチュートリアルNSURLProtocol classの助けを借りて実装したカスタムがあります。私の実装は、名前、データモデルなどを除いて、チュートリアルとほとんど同じです...

基本的に、私はHTTPリクエストを送信しようとしていますが、 URL「http://」で始まるのではなく、「bla://」で始まる必要があります。

現在、 を登録しprotocol classて 経由で使用しようとしていますAFNetworking frameworkが、問題が発生しています。

canInitWithRequest:メソッドはある時点で NO を返し始め、この時点でリクエストは失敗し、「サポートされていない URL」エラーが発生し続けます。

の登録に加えて、メソッドでこれを呼び出しprotocol classてクラスを に追加しようとしました。AFHTTPSessionManagerprotocolClassesdidFinishLaunchingWithOptions

また、アプリの info.plist の URL スキーム フィールドに URL スキームを追加しました。

まだ運がない...私がやろうとしていることは可能ですか?もしそうなら、何が欠けているのでしょうか?ありがとう

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

objective-c - カスタム NSURLProtocol を使用している場合、UIWebView がリダイレクトされたページのコンテンツをロードしない

HTTP リクエストをプロキシするために登録された UIWebView とカスタム NSURLProtocol クラスがあります。github.com の読み込みに問題があります。https://github.comを参照すると、ページとそのコンテンツが正常に読み込まれます。ただし、http://github.comを参照すると、HTML は正しく読み込まれますが、画像や CSS は読み込まれません。https バージョンをロードすると、次のようになります。

HTTPS GitHub

http バージョンをロードすると、次のようになります。

HTTP GitHub

この問題を再現するために使用したView Controllerのコードは次のとおりです。

NSURLProtocol の実装は次のとおりです。

カスタム NSURLProtocol クラスを無効にすると、正常に動作します。Charles を使用して HTTP 要求と応答を調べたところ、NSURLProtocol の有無にかかわらず同じように見えます。

問題は、NSURLConnection を使用してページ データを取得するときに、UIWebView が Web ページのコンテンツを要求しないのはなぜですか?

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

ios - カスタム NSURLProtocol と HTTP プロキシを使用したリダイレクトの処理

プロキシ サーバー経由ですべてのトラフィックをリダイレクトするカスタム URLProtocol があります。

私の現在の作業コードは次のようになります。

これはこれまでのところうまくいきます。問題は、リダイレクトを使用する URL がいくつかあることです。デバイスではなく、プロキシ サーバーでもリダイレクトを実行する必要があります。次のコードを追加しようとしましたが、役に立ちませんでした。

問題は、新しいリクエストがプロキシ サーバーに送信されず、代わりにデバイス自体によってリダイレクトされることです。

ありがとう。

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

ios - NSURLProtocol - https リクエストを処理する

これは次の場所canInitWithRequestにありNSURLProtocolます。

しかし、 httpsリクエストもNSURLProtocol許可したいのです。 私はこれを試しましたが、呼び出されるとすべてのリクエストが失敗します:

}

1 つの例は、 httpsスキームを持つログイン要求です。上記の関数ではYESが返されますが、ログイン要求が呼び出されると、ログに次のエラーが表示されます。

エラー Domain=NSURLErrorDomain Code=-1004 「サーバーに接続できませんでした。」

ただし、 httpsのチェックを外すとcanInitWithRequest、エラーは発生しません。RNCachingURLProtocol
を 使用してリクエストをキャッシュしています。 どうすればこれを達成できますか。