当前位置:  开发笔记 > 编程语言 > 正文

从UIWebView读取JSON内容

如何解决《从UIWebView读取JSON内容》经验,为你挑选了2个好方法。

我正在使用UIWebView来显示验证码.如果用户正确输入验证码,则服务器使用JSON序列化返回数据.我不希望视图显示这个,而是我想拦截UIWebView的负载,如果它返回JSON序列化数据,我想存储该数据并删除UIWebView.

我正在考虑设置UIWebView的委托并使用它的webViewDidFinishLoad,但是如何获取内容?



1> David Carney..:

您可能希望查看定义UIWebViewDelegate和使用 webView:shouldStartLoadWithRequest:navigationType:拦截请求并处理它.

在您的情况下,您将评估NSURLRequest并返回NO以防止加载WebView.反过来,您将NSURLConnection使用相同的请求创建一个单独的,并设置一个委托来接收(JSON)响应.



2> quano..:

我想出了这个(也许不是那么漂亮)的解决方案:

我使用的是与验证码相同的HTML模板,而不是返回仅限json的响应.如果验证码成功,我将我想要的json发送到HTML模板,该模板将其显示在带有ID的隐藏div中:




{% if captcha_success %}

{"jsonvalue":"{{result}}"}
{% else %} // display captcha as usual {% endif %}

然后我可以使用以下方法获取webViewDidFinishLoad中的内容:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *res = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('json').innerHTML"];
NSDictionary *json = [[CJSONDeserializer deserializer] deserializeAsDictionary:[res dataUsingEncoding:NSUTF8StringEncoding] error:nil];
// more stuff
}

一般来说,我认为实施非常简单直接.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有