問題タブ [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.
iphone - カスタム NSURLResponse クラスを返す
カスタム NSURLProtocol で NSURLResponse のサブクラスのオブジェクトを返そうとしましたが、返された応答は常に通常の NSURLResponse によって交換されているようです。
これは、カスタム TestURLResponse を返す NSURLProtocol の一部です。
このプロトコルで何かを読むと、TestURLResponse タイプの応答が返されることを期待していますが、次のコードでは常に NSURLResponse を取得します。
テスト プロジェクト全体は、次の URL からダウンロードできます。
今のところ、何か間違ったことをしているのか、それとも何かが壊れているのかわかりません。NSURLProtocol 状態のドキュメント
プロトコルの実装者は、カスタムの変更可能な NSURLResponse クラスを作成して、プロトコル固有の情報を提供することを希望する場合があります。
しかし、私には、これはまったく機能していないようです。
iphone - NSURLConnection デリゲート メソッドが呼び出されない
GET リクエストを使用してサーバーと通信するための単純な NSURLConnection を作成しようとしています。接続はうまく機能しますが、NSURLConnection のデリゲート メソッドが呼び出されることはありません。
これが何をしているのかです:
次のデリゲート メソッドを実装しましたが、どれも呼び出されません..
何か不足していますか?
ios - 2番目のWebビューで使用されていないカスタムNSURLプロトコル
私はそれを次のコードでサブクラスNSURLProtocol
化して登録しました:didFinishLaunchingWithOptions
アプリの最初UIWebView
の部分(メインウィンドウ内)でメソッドcanInitWithRequest
がトリガーされ、カスタムコードを実行できます。
ただし、2つ目は、アプリのある時点でプッシュされる(モーダルで表示される)UIWebView
内部にあります。UIViewController
はcanInitWithRequest
2番目に呼び出されUIWebView
ないため、カスタムコードを実行できません。UIWebView
これは、の両方のインスタンスが作成された後にプロトコルが登録されている場合にも当てはまります。
誰もが理由を知っていますか?
[編集]d'oh!私はちょうどそれが2番目のウェブビューにロードされたjavascriptの単なるエラーであることに気づきました:(今は両方のウェブビューで魅力のように機能します!
ios - NSURLProtocol とポスト アップロードの進行状況
NSURLProtocol のサブクラスを使用して、すべての HTTP 呼び出しをインターセプトし、ユーザー エージェントを変更し、サーバーに必要な他の http ヘッダーを追加しています。
次に、私のプロトコルは NSURLConnection を使用します
次に、呼び出しを同等の NSURLProtocolClient メソッドに転送することで、NSURLConnection にすべてのデリゲート メソッドを実装します。これは一般的にはうまくいきますが、サーバーにデータをアップロードしているときに、NSURLConnection を使用しているコードが呼び出されません:
接続:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
アップロードの進行状況を報告するために使用できる同等の NSURLProtocolClient メソッドがないため、NSURLProtocol にそのメソッドを実装しなかったため、これがなぜなのかを理解しています。
誰かがこれに対する回避策を見つけましたか?
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: に変換できます。解決:
しかし、私が望むものを達成するための代替および/またはより良い方法があるかどうか疑問に思っています。
objective-c - カスタムNSURLProtocolはそれ自体をリダイレクトする必要がありますか、それともクライアントにそれを心配させる必要がありますか?
NSURLProtocolClientプロトコルには、NSURLProtocol-URLProtocol:wasRedirectedToRequest:redirectResponse:
サブクラスのインスタンスがURLプロトコルクライアントに要求がリダイレクトされたことを通知するために使用することになっているメソッドが含まれています。ただし、URLプロトコルがリダイレクトされたURLからリソースを取得しようとするのか、それともクライアントにそのリソースに対する新しい要求を発行させるのかはわかりません。
リダイレクトの場合に元のURLプロトコルオブジェクトが何をすることになっているのか誰か教えてもらえますか?
ios - NSHTTPURLResponse のヘッダーを変更する
メソッドを使用せずに NSHTTPURLResponse のヘッダーを変更することは可能ですか?
新しいカスタマイズされた NSHTTPURLResponse を作成するには
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
リクエストのソースについてより多くのコンテキストを取得して、リクエストされたファイルを探すときにパスを修正する方法はありますか?
ios - HTML ページの読み込み中にすべての NSURLRequests をキャプチャする方法はありますか?
具体的に言うと、HTMLページをダウンロードしたい場合、UIWebViewデリゲートでは処理できない画像、音楽、jsなどへの多くのリクエストがあります。
より具体的に言うと、ajax-requests の処理に興味があります。読み込まれたすべての html ページに javascript を挿入して ajax-handler を実装しようとしましたが (ソース: UIWebViewDelegate が XMLHttpRequest を監視していませんか? )、これは機能しません (iOS 5.1.1)。
NSURLProtocol(簡易プロキシ)のサブクラスを実装することで解決できると思いますが、方法がわかりません。
助けてください!
ios - CDVURLProtocol - ajax 呼び出しがトリガーされたときに startLoading メソッドが実行されない
クライアント証明書を追加してリクエストを変更するために、発信する ajax 呼び出しをキャッチしようとしています。
NSURLProtocol をサブクラス化することでできるようです。Phonegap には、CDVURLProtocol というサブクラスが既に存在します。
canInitWithRequest メソッドは呼び出されますが、リクエストの変更を実装できる startLoading メソッドは呼び出されません。
何か案は ?
前もって感謝します、