問題タブ [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 - NSHTTPURLProtocol クラスがないのはなぜですか?
まあ、NSURLProtocol
かなり一般的ですよね?あらゆる種類のプロトコルを定義するためのものですね。
では、なぜ のようなものがないのNSHTTPURLProtocol
でしょうか。代わりに、特定の HTTP 要素を含む NSURLRequest に関する非公式のカテゴリがあります。なぜ彼らはこのようにしたのですか?代わりにカスタム HTTP プロトコルがないのはなぜですか?
NSURLRequest
HTTP 用のカスタム プロトコルではなく、これらすべてを独自のプロトコルに組み込むことの背後にある考え方は何ですか?
確かに HTTP はよく使われますが、とにかく: の URL ローディング システム全体を理解するには混乱しますCocoa/CocoaTouch
。これでドキュメントが 2 つになりました。1 つは、「独自のプロトコルのカスタムNSURLProtocol
サブクラスを作成する」というものです。もう1つは、「HTTPのもののような非公式のカテゴリを作成する」というものですNSURLRequest
。
深い理解のある人がそれを解決できることを願っています;)
iphone - カスタムNSProtocolとiPhoneでのキャッシュに関する問題
私のiPhoneアプリには、登録したカスタムNSProtocolハンドラーを介してhtmlをロードするUIWebViewが埋め込まれています。
私の問題は、返されたhtmlで参照されているリソースがキャッシュされ、再ロードされないことです。特に、私のスタイルシートはキャッシュされます:
UIWebViewにhtmlをロードする最初のリクエストは次のようになります。
(キャッシュポリシーは無視するように設定されていることに注意してください。このキャッシュポリシーが、初期ロード時にページリソースの後続の要求に引き継がれることを確認しました)
プロトコルハンドラーはデータベースからhtmlをロードし、次のようなコードを使用してクライアントに返します。
(応答キャッシュポリシーは「許可されていない」ことに注意してください)。
styles.cssリソースをキャッシュしないようにする方法はありますか?このファイルを参照するhtmlの後続のロードで、このリソースのコンテンツを動的に変更できる必要があります。
共有URLキャッシュをクリアすることは機能すると思いましたが、機能しません。
動作するものの1つは、非常に非効率的です。タイムスタンプパラメータを追加して、スタイルシートのURLを動的にキャッシュバストすることです。
これを機能させるには、データベースからhtmlをロードし、スタイルシートのURLを検索して、リクエストごとに変更されるキャッシュ無効化パラメーターに置き換える必要があります。私はむしろこれをしたくない。
組み込みのHTTPプロトコルを介してコンテンツをロードしても問題はないと思います。その場合、UIWebViewはNSURLHTTPResponseオブジェクトのhttpヘッダー内のCache-Controlフラグを調べ、それらを順守していると思います。私のNSURLResponseObjectにはhttpヘッダーがないので(http ...ではありません)、おそらくUIWebViewはリソースをキャッシュすることを決定します(NSURLRequestキャッシングディレクティブを無視しますか?)。
アイデア???
cocoa - カスタム URL プロトコルを HTTP にマップします (NSURLProtocol を使用しますか?)
WebKit WebView を使用するアプリケーションがあり、カスタム URL プロトコルを使用してこの WebView に読み込まれた URL を別の HTTP URL にマップしたいと考えています。たとえば、次のように読み込んでいるとします。
custom://path/to/resource
内部的に実際にロードしたい:
http://something-else.com/path/to/resource
言い換えれば、カスタム プロトコルはほぼ省略形として機能します。ただし、-webView:resource:willSendRequest:redirectResponse:fromDataSource: を使用することはできません。これは、単に一方から他方にリダイレクトするのではなく、これが問題の URL であると WebKit に実際に信じさせたいためです。
これまでのところ、カスタム NSURLProtocol サブクラスの使用を試みてきました。ただし、少なくとも私の理解では、NSURLProtocol サブクラスの startLoading メソッドで実際の読み込みを自分で行う必要があるため、これは最初に考えたよりも複雑です。既存の HTTP プロトコル ローダーに作業を渡すだけの方法が欲しいのですが、これを行う簡単な方法が見つかりません。
これに関する推奨事項、またはこの問題を解決する別の方法はありますか?
ありがとう!
c++ - HTMLコンテンツを提供するためのWindowsのカスタムURLプロトコル
この質問では、カスタムURLプロトコルを登録して、リンクに応答してアプリケーションを起動する方法について説明しますが、ハンドラーに動的コンテンツを提供させたいと考えています。
基本的に、私はWebサーバーではなくユーザーのマシンで実行されるWebアプリケーションを作成しようとしています。を設定することもできlocalhost
ますが、ユーザーが他の場所で参照できる「わかりやすい」URL形式を使用したいと思います。たとえば、架空のcats
プロトコルです。
どうすればこれを達成できますか?また、ブラウザからのセキュリティ警告など、このアプローチの落とし穴はありますか?
iphone - NSURLProtocol 内から UIWebView をリクエストする方法
私のアプリは NSURLProtocol のサブクラス化を使用しています。アプリにはいくつかの UIWebView があり、NSURLProtocol に実装されている特定のアルゴリズムについては、どの UIWebView が要求を送信するかを知る必要があります。
私の理解では、[self client] によって返されたオブジェクトは、オブジェクトの要求とある程度関連している必要があります。ただし、NSURLProtocolClient ([self client] によって返されるオブジェクトによって実装されるプロトコル) も、基になるオブジェクト _NSCFURLProtocolBridge にも、要求の送信者を取得するためのプロパティ/メソッドはありません。
誰でもアイデアを手伝ってもらえますか?
javascript - GETではなくPOSTを使用してObjectiveCにデータを渡す
私はURLインターセプトメソッドを使用してデータをJavaScriptからObjectiveCに渡し、データをURLエンコードされたパラメーターとして渡し、NSURLProtocolを使用してリクエストをインターセプトしていましたが、10,000文字の長さの文字列など、大量のデータを送信したいと考えていますが、これはGETリクエストで行うのは実用的ではないようです。右?
Objective cがUIWebViewから送信されたPOSTデータを傍受する方法はありますか?
その場合でもNSURLProtocolを使用し、POSTデータを取得するにはどうすればよいですか?
そうでない場合は、UIWebViewからObjective Cに大量のデータを渡すことができる他の方法はありますか?
ios - カスタムNSURLProtocolを使用してURLで映画を再生するにはどうすればよいですか?
ご存知のように、MPMoviePlayerControllerオブジェクトを使用して映画を再生します
ここで、AlgorithmDESによって暗号化されたムービーソースを復号化するカスタムNSURLProtocolを実現したいと思います。その可能性はありますか?アイデアを出してくれてありがとう。助けが必要です〜
iphone - NSURLResponse で statusCode を設定する方法
NSURLProtocol をオーバーライドし、特定の statusCode で HTTP 応答を返す必要があります。NSHTTPURLResponse には statusCode セッターがないため、次のようにオーバーライドしようとしました。
NSURLProtocol のオーバーライドされた startLoading メソッドは次のようになります。
しかし、このアプローチは機能しません。NSURLProtocol で作成された応答は、Web ページ上で常に statusCode = 0 になります。同時に、NSURLConnection によってネットワークから返される応答には、通常の予想される statusCodes があります。
作成された NSURLResponse に対して statusCode を明示的に設定する方法について、誰でもアイデアを手伝ってもらえますか? ありがとう。
iphone - カスタム NSURLProtocol の content-type をどのように変更しますか?
NSURLProtocol のカスタム サブクラスを作成しましたが、プロトコルを使用して UIWebView にリクエストをロードするたびに、データがコンテンツ タイプ「text/html」であると想定しているようです。このコンテンツが実際に別のものであることを指定する方法はありますか (たとえば、「text/plain」または「image/png」)?
iphone - ローカル画像ファイルを含むiOSWebViewリモートhtml
以前にも同様の質問がありましたが、解決策を見つけることができませんでした。
これが私の状況です-私のUIWebViewはリモートのhtmlページをロードします。Webページで使用されるイメージは、ビルド時に認識されます。ページの読み込みを高速化するために、iOSアプリケーションに画像ファイルをパッケージ化し、実行時にそれらを置き換えたいと思います。
[htmlはリモートであることに注意してください。私はいつもローカルからhtmlと画像ファイルの両方をロードするための答えを得ます-私はすでにそれをしました]
私が得た最も近い推奨事項は、htmlページとiOSアプリケーションでmyapp://images/img.pngなどのカスタムURLスキームを使用し、myapp:// URLをNSURLProtocolサブクラスでインターセプトし、画像をローカルに置き換えることでした。画像。理論的には良さそうに聞こえますが、これを示す完全なコード例は見つかりませんでした。
私はJavaのバックグラウンドを持っています。カスタムコンテンツプロバイダーを使用して、Androidでこれを簡単に行うことができます。iOS/Objective-Cにも同様のソリューションが存在する必要があると確信しています。私はObjective-Cで、自分が持っている短い時間枠でそれを自分で解決するのに十分な経験がありません。
どんな助けでもありがたいです。