如何在webview中使用post url

时间:2015-01-27 09:12:08

标签: android webview

这个过程应该很简单:

查询(使用POST数据) - >设置in->的WebView。 我尝试集成一个在Web视图中打开的付款门页面.i有一个帖子URL链接和一些参数。我使用此代码

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"));
当我打开外部浏览器支付页面打开时,请帮助我。但是当我尝试在侧面webview中打开它不起作用。

2 个答案:

答案 0 :(得分:2)

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");

    }

答案 1 :(得分:0)

我遇到同样的问题,我可以在网页浏览中成功发布网址,但下一页无法在网页视图中打开

我在webview中尝试下面的代码页面显示

在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); 

覆盖onReceivedSslError()方法。

    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;
                }
            });

希望对其他人有所帮助。