問題タブ [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 に答える
1577 参照

iphone - カスタム NSURLResponse クラスを返す

カスタム NSURLProtocol で NSURLResponse のサブクラスのオブジェクトを返そうとしましたが、返された応答は常に通常の NSURLResponse によって交換されているようです。

これは、カスタム TestURLResponse を返す NSURLProtocol の一部です。

このプロトコルで何かを読むと、TestURLResponse タイプの応答が返されることを期待していますが、次のコードでは常に NSURLResponse を取得します。

テスト プロジェクト全体は、次の URL からダウンロードできます。

http://ul.to/9yylk65s

今のところ、何か間違ったことをしているのか、それとも何かが壊れているのかわかりません。NSURLProtocol 状態のドキュメント

プロトコルの実装者は、カスタムの変更可能な NSURLResponse クラスを作成して、プロトコル固有の情報を提供することを希望する場合があります。

しかし、私には、これはまったく機能していないようです。

0 投票する
4 に答える
29654 参照

iphone - NSURLConnection デリゲート メソッドが呼び出されない

GET リクエストを使用してサーバーと通信するための単純な NSURLConnection を作成しようとしています。接続はうまく機能しますが、NSURLConnection のデリゲート メソッドが呼び出されることはありません。

これが何をしているのかです:

次のデリゲート メソッドを実装しましたが、どれも呼び出されません..

何か不足していますか?

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

ios - 2番目のWebビューで使用されていないカスタムNSURLプロトコル

私はそれを次のコードでサブクラスNSURLProtocol化して登録しました:didFinishLaunchingWithOptions

アプリの最初UIWebViewの部分(メインウィンドウ内)でメソッドcanInitWithRequestがトリガーされ、カスタムコードを実行できます。

ただし、2つ目は、アプリのある時点でプッシュされる(モーダルで表示される)UIWebView内部にあります。UIViewControllercanInitWithRequest2番目に呼び出されUIWebViewないため、カスタムコードを実行できません。UIWebViewこれは、の両方のインスタンスが作成された後にプロトコルが登録されている場合にも当てはまります。

誰もが理由を知っていますか?

[編集]d'oh!私はちょうどそれが2番目のウェブビューにロードされたjavascriptの単なるエラーであることに気づきました:(今は両方のウェブビューで魅力のように機能します!

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

ios - NSURLProtocol とポスト アップロードの進行状況

NSURLProtocol のサブクラスを使用して、すべての HTTP 呼び出しをインターセプトし、ユーザー エージェントを変更し、サーバーに必要な他の http ヘッダーを追加しています。

次に、私のプロトコルは NSURLConnection を使用します

次に、呼び出しを同等の NSURLProtocolClient メソッドに転送することで、NSURLConnection にすべてのデリゲート メソッドを実装します。これは一般的にはうまくいきますが、サーバーにデータをアップロードしているときに、NSURLConnection を使用しているコードが呼び出されません:

接続:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:

アップロードの進行状況を報告するために使用できる同等の NSURLProtocolClient メソッドがないため、NSURLProtocol にそのメソッドを実装しなかったため、これがなぜなのかを理解しています。

誰かがこれに対する回避策を見つけましたか?

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

iphone - UIWebView および POST リクエストでカスタム NSURLProtocol を使用する

私の iOS アプリでは、UIWebView とカスタム プロトコルを使用しています (独自の NSURLProtocol 実装を使用)。URL をロードするたびに、次のようなものを UIWebView にロードするように、かなり注意を払ってきました。

myprotocol://myserver/mypath

私の NSURLProtocol 実装では、NSURLRequest の変更可能なコピーを取得し、URL を http: に変換してサーバーに送信します。

HTTP GET リクエストではすべてが機能します。私が遭遇する問題は、POST リクエストに関するものです。リクエストがカスタム プロトコルを使用している場合、UIWebView が HTTPBody のフォーム データを適切にエンコードしていないようです。

サーバー要求に HTTPS を使用しているため、回避策の 1 つは、myprotocol: の代わりに http: をインターセプトするようにプロトコル ハンドラーを登録することです。すべての呼び出しを https: に変換できます解決:

しかし、私が望むものを達成するための代替および/またはより良い方法があるかどうか疑問に思っています。

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

objective-c - カスタムNSURLProtocolはそれ自体をリダイレクトする必要がありますか、それともクライアントにそれを心配させる必要がありますか?

NSURLProtocolClientプロトコルには、NSURLProtocol-URLProtocol:wasRedirectedToRequest:redirectResponse:サブクラスのインスタンスがURLプロトコルクライアントに要求がリダイレクトされたことを通知するために使用することになっているメソッドが含まれています。ただし、URLプロトコルがリダイレクトされたURLからリソースを取得しようとするのか、それともクライアントにそのリソースに対する新しい要求を発行させるのかはわかりません。

リダイレクトの場合に元のURLプロトコルオブジェクトが何をすることになっているのか誰か教えてもらえますか?

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

ios - NSHTTPURLResponse のヘッダーを変更する

メソッドを使用せずに NSHTTPURLResponse のヘッダーを変更することは可能ですか?

新しいカスタマイズされた NSHTTPURLResponse を作成するには

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

ios - NSURLProtocolサブクラスを介した相対パスからのリソースのロード

UIWebViewベースのアプリにNSURLProtocolを登録し、fileスキーム要求に応答するように設定しました。

Webビューでは、画像、CSS、JSなどをロードしますが、これらはすべて正常に機能しています。HTMLツリーのルートディレクトリにないCSSファイルの画像を参照しようとすると問題が発生します。例えば

NSURLProtocolに到着するリクエストを見ると、ソースツリーのどこにリクエストファイルがあるかを判断する方法がわかりません。

たとえば、上記のHTMLがというファイルにある場合source/index.html、NSURLProtocolサブクラスはファイル../2.pngからのリクエストを取得しsource/css/style.cssます。

これはに解決されるはずですが、パスにsource/2.pngそのサブディレクトリが含まれている必要があるかどうかはわかりません。css

リクエストのソースについてより多くのコンテキストを取得して、リクエストされたファイルを探すときにパスを修正する方法はありますか?

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

ios - HTML ページの読み込み中にすべての NSURLRequests をキャプチャする方法はありますか?

具体的に言うと、HTMLページをダウンロードしたい場合、UIWebViewデリゲートでは処理できない画像、音楽、jsなどへの多くのリクエストがあります。

より具体的に言うと、ajax-requests の処理に興味があります。読み込まれたすべての html ページに javascript を挿入して ajax-handler を実装しようとしましたが (ソース: UIWebViewDelegate が XMLHttpRequest を監視していませんか? )、これは機能しません (iOS 5.1.1)。

NSURLProtocol(簡易プロキシ)のサブクラスを実装することで解決できると思いますが、方法がわかりません。

助けてください!

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

ios - CDVURLProtocol - ajax 呼び出しがトリガーされたときに startLoading メソッドが実行されない

クライアント証明書を追加してリクエストを変更するために、発信する ajax 呼び出しをキャッチしようとしています。

NSURLProtocol をサブクラス化することでできるようです。Phonegap には、CDVURLProtocol というサブクラスが既に存在します。

canInitWithRequest メソッドは呼び出されますが、リクエストの変更を実装できる startLoading メソッドは呼び出されません。

何か案は ?

前もって感謝します、