How to make post requests with webview?

后端 未结 2 1626
被撕碎了的回忆
被撕碎了的回忆 2020-12-10 05:58

I want to make an http post request using webview.

webView.setWebViewClient(new WebViewClient(){


            public void onPageStarted(WebView view, String         


        
相关标签:
2条回答
  • 2020-12-10 06:17

    First add the support of the http library to your gradle file: To be able to use

    useLibrary 'org.apache.http.legacy'

    After this you can use the following code to perform post request in your webview:

    public void postUrl (String url, byte[] postData)
    String postData = "submit=1&id=236";
    webview.postUrl("http://www.belencruzz.com/exampleURL",EncodingUtils.getBytes(postData, "BASE64"));
    

    http://belencruz.com/2012/12/do-post-request-on-a-webview-in-android/

    0 讨论(0)
  • 2020-12-10 06:26

    The WebView does not let you access the content of the HTTP response.

    You have to use HttpClient for that, and then forward the content to the view by using the function loadDataWithBaseUrl and specifying the base url so that the user can use the webview to continue navigating in the website.

    Example:

    // Executing POST request
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);
    httppost.setEntity(postContent);
    HttpResponse response = httpclient.execute(httppost);
    
    // Get the response content
    String line = "";
    StringBuilder contentBuilder = new StringBuilder();
    BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    while ((line = rd.readLine()) != null) { 
        contentBuilder.append(line); 
    }
    String content = contentBuilder.toString();
    
    // Do whatever you want with the content
    
    // Show the web page
    webView.loadDataWithBaseURL(url, content, "text/html", "UTF-8", null);
    
    0 讨论(0)
提交回复
热议问题