我有一个场景,我有一个url,我使用HttpClient进行http获取请求。该URL以某种形式在Webview中打开网页。单击该窗体中的按钮,它会生成一些JSON响应。如何从WEBView获取JSON响应到Android中的调用活动。
任何人都可以帮助解决这个问题。
答案 0 :(得分:0)
您应该覆盖WebViewClient的shouldOverrideUrlLoading方法
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
if(flag) {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
// read inputstream to get the json..
...
...
return true;
}
return false
}
@override
public void onPageFinished (WebView view, String url) {
if (url contains "form.html") {
flag = true;
}
}
答案 1 :(得分:0)
使用一个接口并在AsyncTask中执行所有网络操作,而不是从WebViewClient调用网络调用。第二件事,pageFinish被不止一次调用,所以不需要标记但是获取url然后验证回调方法中是否正确。
要将数据从customWebClient传递到activity,请创建一个接口并在您的活动中实现它,并使用它将您的url从shouldOverrideurlLoading传递给活动。
public interface ICallback{
public void passData(String url);
}
public class myActivity extends Activity implements iCallback{
public void passData(String url){
//validate url
//call async task to get result
}
}
public CustomWebViewClient extends WebViewClient{
iCallback mCallback;
public CustomWebViewClient(Context context, ICallback callback){
mCallback = callback;
}
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
mCallback.passData(url);
return true;
}
return false
}