問題タブ [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.
swift - カスタム構成で NSURLSession で NSURLProtocol を使用する方法はありますか?
バックグラウンド キューで実行される NSURLSession があります。NSURLProtocol
サブクラスをに追加していますNSURLsessionConfiguration.protocolClases
が、override class func canInitWithRequest(request: NSURLRequest) -> Bool
決して呼び出されません。
これが私が追加する方法ですNSURLProtocol
また、バックグラウンドで実行されていないセッションで試してみましたが、機能しませんでした:
これがうまくいかなかったので、私は試しました:
そして、これを私のAppDelegateで呼び出します
これは機能しますが、何が間違っていますか?!
javascript - WKWebview でリクエストを監視するにはどうすればよいですか?
WKWebview でリクエストを監視するにはどうすればよいですか?
NSURLprotocol (canInitWithRequest) を使用してみましたが、ajax リクエスト (XHR) は監視されず、ナビゲーション リクエスト (ドキュメント リクエスト) のみが監視されます。
objective-c - プロキシ サーバーの永続的な接続を閉じています
OSX アプリのプロキシ サポートを実装しています。
カスタムを作成しましたが、NSURLProtocol
認証なしのプロキシで完全に機能しています。ローカル ネットワークの Windows コンピューターで CCProxy と FreeProxy の両方を試しました。
ただし、プロキシ認証がオンの場合、最初の数秒間のリクエストはすべて完全に機能し、接続は 5 秒で ESTABLISHED から CLOSE_WAIT になります。プロキシは再び 0 接続を示し、その後、プロキシ認証ヘッダーが事前に設定されていても、アプリで HTTP リクエストが 407 を取得します。
私のコードは次のようになります:
ご覧のとおり、以前の接続を静的な入力ストリームに保存し、新しい接続を開いた後にのみ解放しようとしましたが、役に立たないようです。
また、 NSStream TCP Keep-alive iOSkCFStreamEventOpenCompleted
で提案されているように、基になるソケットをキープアライブに設定しようとしましたが、まだ成功していません。
接続が閉じるのはなぜですか? どうすればデバッグしたり、機能させたりできますか? 接続の障害はプロキシが異常になりますか?
ありがとう。
編集1:
編集 2 : HTTPS に関係しているようです... サーバーを https ではなくプレーンな http に変更すると、完全に機能します。
ios - AJAX での NSURL プロトコルのタイムアウト
NSURLProtocol を使用して、UIWebview から送信されるすべてのリクエストにカスタム ヘッダーを追加します。この WebView では、特定の操作を行う際に AJAX 呼び出しが起動され、メッセージが表示されます。メッセージを表示するこの操作は AJAX を使用し、NSURLProtocol メソッドを使用すると常にタイムアウトします。NSURLProtocol がなくても正常に動作します。
さらに情報が必要な場合はお知らせください。ここに私のコードがあります。
ios - カスタム NSURLProtocol を configuration.protocolClasses に追加すると、デフォルトの URL プロトコルの動作が妨げられます
他のすべての通話に通常のインターネット接続を提供しながら、一部の通話にテスト データを提供するためにカスタムNSURLProtocol
をに追加しようとしています。セッションはプロジェクトに含まれるライブラリに存在するため、セッション構成のにNSURLSession
を追加してこれを行う必要があります。NSURLProtocol
protocolClasses
true
なんらかの理由で、カスタム プロトコルが呼び出しを返すことによって要求を受け取ったとき、私のセットアップはテスト データを配信しますが、canInitWithRequest
他のすべての要求 (それが返されたとき) では、まだカスタム プロトコルの背後にfalse
あるデフォルト プロトコルが要求を取得し、呼び出しに戻るprotocolClasses
ことさえありますが、要求をインターネットに送信することはなく、代わりに 30 秒後に要求タイムアウトを配信します。からカスタム プロトコルを削除すると、すべて正常に動作します。もちろん、テスト データだけが提供されなくなります。true
canInitWithRequest
protocolClasses
これは、プロトコルのインストールに使用するコードです。
カスタム プロトコルを に登録すると[NSURLProtocol registerClass:[MyProtocol class]]
、フォールスルーは機能しますが、記載されているように、プロジェクトでこのアプローチを使用することはできません。
これが正しく機能しない理由について何か考えはありますか?
ios - NSURLProtocol + UIWebView + 特定のドメイン = アプリの UI がフリーズ
iOS 用のブラウザを作成しています。NSURLProtocol
独自のキャッシング スキームを実装し、ユーザー エージェント スプーフィングを実行するために、カスタム サブクラスを使用して実験することにしました。それは両方とも非常にうまく機能します...問題は、特定のサイト (msn.com が最悪) に移動すると、アプリ全体のUI が最大 15 秒間フリーズすることです。明らかに何かがメイン スレッドをブロックしていますが、それは私たちのコードにはありません。
UIWebView
この問題は、 とカスタム プロトコルの組み合わせでのみ発生します。WKWebView
(さまざまな理由で使用できない)を交換すると、問題はなくなります。同様に、プロトコルが使用されないように登録しなければ、問題は解決します。
また、プロトコルが何をするかはあまり重要ではないようです。応答を転送するだけの最低限のダミー プロトコルを作成しました (投稿の下部)。そのプロトコルを、他のコードを一切持たない必要最小限のテスト ブラウザに落とし込みましたが、結果は同じでした。また、他の誰かの ( RNCachingURLProtocol
) を使用してみましたが、同じ結果が観察されました。これら 2 つのコンポーネントを特定のページと単純に組み合わせると、フリーズが発生するようです。私はこれを解決しようとする(または調査する)ことに途方に暮れており、ガイダンスやヒントをいただければ幸いです。ありがとう!
ios - NSURLSession で NSURLProtocol を使用する
私のアプリケーションはNSURLConnection
、サーバーとの通信に使用します。通信には https を使用しています。すべてのリクエストからの認証を 1 か所で処理するためにNSURLProtocol
、そのクラスのデリゲートで認証を使用して処理しました。NSURLSession
の代わりに使用することにしNSURLConnection
ました。私は
タスクを作成し、によって使用されて作業NSURLProtocol
しようとしていますNSURLSession
NSURLProtocol
CustomHTTPSProtocol
私のNSURLProtocol
クラスは次のようになります
start loading が呼び出され、認証チャレンジも行われますが、その直後に stop loading が呼び出されます。
しばらくするとエラーコード-999「キャンセルされました」が返ってきます。didReceiveData は呼び出されません。
Note:NSURLProtocol and the Authentication Process worked fine with NSURLConnection.
何が欠けていますか?? 私の質問は
[NSURLProtocol registerClass:[CustomHTTPSProtocol クラス]] を登録しています。NSURLConnection では問題なく動作しましたが、NSURLSession でグローバルに NSURLProtocol を登録する方法は?.
URLSession を使用した NSURLProtocol (URLConnection で動作したのと同じ URL とロジック) でリクエストが失敗するのはなぜですか? また、NSURLProtocol を URLSession で動作させる方法は?.
詳細が必要な場合はお知らせください。
ios - NSURLSessions の NSRULProtocol をグローバルに再登録する
NSURLProtocol を使用して、すべての NSURLSession 接続の認証チャレンジを処理しようとしています。使った
NSURLConnection の場合。ただし、NSURLSession では機能しないため、設定する必要がありますSessionConfiguration.protocolClasses=@[[CustomHTTPSProtocol class]];
。問題は、この URLProtocol クラスを使用して認証チャレンジのみを処理し、元のクラスのデリゲートで受信データを取得することです。
このようなもの
オリジナルクラス
NSURL接続
NSURLセッション
NSURLProtocol クラス
NSURL接続
NSURLセッション
上記のロジックを使用して、すべてのリクエストの認証をグローバルに処理し、レスポンスを個別に処理することができました。しかし、NSURLProtocol を使用する場合、NSURLSession では、認証は Protocol クラスで行われますが、元のクラスのデリゲートが呼び出されないため、データを受信できません。
誰か助けて。
ios - UIWebView/NSURLProtocol - オフライン時に到達できない外部アセットのプレースホルダー
私のアプリは、iPhone/iPad で書籍を閲覧するための電子書籍リーダーです。ユーザーは、デバイスに保存された書籍を .epub ファイル (zip コンテンツ) としてダウンロードするオプションを利用できます。これにより、オフラインで書籍を表示できるようになります。ページの内容は html です。
ただし、ビデオなどの一部のアセットは、この .epub コンテンツには含まれていません。ユーザーがそのようなページに移動すると、.ePub にない外部アセットを検出し、「このコンテンツはオフライン時は利用できません」というテキストを含む単純なプレースホルダーを表示する必要があります。
これらのビデオは、iFrame html タグまたは object タグに埋め込むことができます。
現在、NSURLProtocol 抽象クラスから継承するクラスがあり、それを使用してこの要件を処理しています。これらの 3 つのメソッドの実装があります。
私の問題は、「このコンテンツはオフラインのときは利用できません」という単純な .png があることですが、iFrame の領域が画像よりも小さい場合があるため、見苦しくなります。フィットするようにスケーリングするにはどうすればよいですか?または、より良いアプローチがありますか?コンテンツが利用できないというこのメッセージを表示できる限り、画像である必要はありません。startLoading メソッドの現在のコード:
ご提案ありがとうございます。