4

いくつかのリンクを表示する UIWebview があります。リンクをクリックすると、JSON が送信されます。送信されたデータを表示するには、次のものが必要です。

1) リンクが呼び出されたことを検出する

2) json を取得する

[webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];2)については、私を返すことを試み ました:

<pre style="word-wrap: break-word; white-space: pre-wrap;">{some JSON}</pre>

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName(\"pre\")"];空のオブジェクトを返します。JSON を取得するには、他にどのような方法が必要ですか?

1) リンクが呼び出されたときに検出する UIWebView デリゲート メソッドはありますか?

4

2 に答える 2

4

私は同じ問題を抱えています。このコードで解決しました

    NSString *jsonString = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName(\"pre\")[0].innerHTML"];
于 2015-12-31T08:40:34.430 に答える
0

iOS Developer Library はあなたの親友です。UIWebView には、サブスクライブできるプロトコルがあることがわかりました。デリゲートコールバックへのリンクは次のとおりです。

あなたが欲しいのは

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

このプロトコルメソッドを実装すると、NSURLRequestオブジェクトをイントロスペクトしNSURLて、残りはあなた次第です...

- (NSData *)HTTPBody編集:完全を期すために、オブジェクトのインスタンスメソッドについて言及する必要がありNSURLRequestます。おそらく、その NSData の中に JSON が見つかるはずです。Foundation フレームワークには、JSON データNSJSONSerializationから を作成するために使用できるクラスがあります。NSObjectこれまでにあなたが持っているものは...

// UIWebView delegate method
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
  NSData *jsonData = request.HTTPBody;
  id jsonObj = [NSJSONSerialization JSONObjectWithData: jsonData options: NSJSONReadingMutableContainers error: nil];
  // do stuff with the object...
  ...
  // the webview shouldn't load the request since it's going to be raw json data (or is it)
  return NO;
}

理論的には、このコードは機能するはずですが、受け取る JSON データが純粋な JSON である場合に限られます。あなたの質問から、JSON データに HTML が少し添付されているように見えるので、HTML 部分のデータを削除するメソッドを実装する必要があります。この方法でのデータ構造の変換に関しては、細かい印刷物がたくさんあることに注意してください。より具体的な情報については、NSJSONSerializationドキュメントを参照してください: http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html

ハッピーコーディング!

于 2013-07-11T10:31:12.927 に答える