1

iOSアプリにUIWebviewがあり、アクセスする各ページの応答ヘッダーを監視する必要があります。これを探してみました。

webViewDidFinishLoad

shouldStartLoadWithRequest

しかし、遠くまでは行きませんでした、さらなる研究は私をに導きました

didReceiveResponse

NSURLConnectionの場合ですが、私の理解では、これは最初の応答しか取得できず、2番目以降の応答は取得できません。

それが役立つなら、私はこれを実装するためにRubymotionを使用しています。

4

3 に答える 3

3

それは不可能です、私は恐れています。JavaScriptを使用して現在のWebURLを取得できます。

https://stackoverflow.com/a/2494051/204044

(または、JSがアクセスできるその他のもの)...しかし、ヘッダーを取得することはできません。これはセキュリティの問題です。

Webサーバーを制御できる場合は、次のようなjavascriptオブジェクトで必要な情報を渡すことができます。

// In your webserver's code, assuming it's PHP:
<script type="text/javascript">
  window.customDataString = "<?= $custom_data ?>";
</script>

// In Objective-C
NSString *customDataString = [webView stringByEvaluatingJavaScriptFromString:@"window.customDataString"];
于 2013-01-29T01:47:10.383 に答える
2

私はAFNetworkingを使用して同様のことを行います。

webView:shouldStartLoadWithRequest:navigationType:を使用して、ユーザーがクリックしたすべてのリンクをキャプチャします。UIWebviewがアイドル状態のままになるように、shouldStartLoadWithRequestでNOを返します。次に、NSURLRequestを取得し、AFNetworkingによってHTMLソースを含む必要なものをすべて取得します。

最後に、loadHTMLString:baseURL:によってHTML文字列をUIWebViewに戻しました。

ユーザーはいつものようにウェブページを閲覧しているように見えます。彼らは私がUIWebviewをバイパスし、UIWebviewを使用してHTMLを表示することを知りません。

于 2013-01-29T03:10:04.653 に答える
0

デリゲートで、カスタムNSURLProtocolサブクラスを登録すると、次のコマンドで応答を監視できます。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
于 2015-09-28T08:27:13.350 に答える