如何从Android中的WebView检索Web服务响应

时间:2015-01-02 05:32:00

标签: android android-activity android-webview

我有一个场景,我有一个url,我使用HttpClient进行http获取请求。该URL以某种形式在Webview中打开网页。单击该窗体中的按钮,它会生成一些JSON响应。如何从WEBView获取JSON响应到Android中的调用活动。
任何人都可以帮助解决这个问题。

2 个答案:

答案 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
}