Ajeet Maurya
Ajeet Maurya

Reputation: 11

how to use post url in webview

The process should be simple:

query(with POST data) -> set in-> WebView. i try to integrate a payment gate page which open in web view .i have a post url link and some param .i am use this code

postData = "hash="+hash+"&key="+key+"&txnid="+txnid+"&amount="+amount+"&productinfo="+productinfo+"&firstname="+firstname+"&email="+email+"&phone="+phone+"&salt="+salt+"&surl="+surl+"&furl="+ furl+"&service_provider="+ service_provider;

        // Javascript inabled on webview  
        webView.getSettings().setJavaScriptEnabled(true); 

        // Other webview options

        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);
        webView.getSettings().setBuiltInZoomControls(true);
        //webView.getSettings().setPluginState(PluginState.ON);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setWebViewClient(new WebViewClient(){
             //If you will not use this method url links are open in new browser not in webview
            public boolean shouldOverrideUrlLoading(WebView view, String url) {              
                view.postUrl("https://test.payu.in/_payment", EncodingUtils.getBytes(postData, "base64"));
                return false;
            }
        });
        //webView.postUrl("https://test.payu.in/_payment", EncodingUtils.getBytes(postData, "base64"));

please help me when i open by using external browser payment page open .but when i try to open in side webview its not work.

Upvotes: 0

Views: 2933

Answers (2)

Lokesh
Lokesh

Reputation: 3334

I have same problem, i am able to post url in webview successfully but next page not opening in web view

i try below code pg page show in webview

add below setting in webview

webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
webView.getSettings().setDomStorageEnabled(true); 

override onReceivedSslError() method.

    webView.setWebViewClient(new WebViewClient() {

                public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
                     handler.proceed() ;
                     }


                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    webView.loadUrl(url);
                    return false;
                }
            });

Hope helpful for other.

Upvotes: 0

HenryChuang
HenryChuang

Reputation: 1459

String url = "https://test.payu.in/_payment";

Map<String, String> mapParams = new HashMap<String, String>();
mapParams.put("amount", "100");
mapParams.put("productinfo", "ipad");

webview_ClientPost(webView, url, mapParams.entrySet());


 public void webview_ClientPost(WebView webView, String url, Collection< Map.Entry<String, String>> postData){
        StringBuilder sb = new StringBuilder();

        sb.append("<html><head></head>");
        sb.append("<body onload='form1.submit()'>");
        sb.append(String.format("<form id='form1' action='%s' method='%s'>", url, "post"));
        for (Map.Entry<String, String> item : postData) {
            sb.append(String.format("<input name='%s' type='hidden' value='%s' />", item.getKey(), item.getValue()));
        }
        sb.append("</form></body></html>");

        webView.loadData(sb.toString(), "text/html", "UTF-8");

    }

Upvotes: 2

Related Questions