Android Webview POST

我正在努力完成一些非常简单的事情,但是我没有find关于这方面的很好的文档。 我有一个webView,我需要加载一个页面,它需要POST数据。 看起来像一个简单的过程,但我找不到一个方法来显示在一个webView的结果。

这个过程应该很简单:

查询(带有POST数据) – > webserver – > HTML响应 – > WebView。

我可以使用DefaultHttpClient提交数据,但不能在WebView中显示。

有什么build议么?

非常感谢

private static final String URL_STRING = "http://www.yoursite.com/postreceiver"; public void postData() throws IOException, ClientProtocolException { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("foo", "12345")); nameValuePairs.add(new BasicNameValuePair("bar", "23456")); HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(URL_STRING); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); String data = new BasicResponseHandler().handleResponse(response); mWebView.loadData(data, "text/html", "utf-8"); } 

尝试这个:

 private static final String URL_STRING = "http://www.yoursite.com/postreceiver"; public void postData() throws IOException, ClientProtocolException { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("foo", "12345")); nameValuePairs.add(new BasicNameValuePair("bar", "23456")); HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(URL_STRING); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); } 

我会build议做这个作为一个AsyncTask的一部分,并更新后的WebView

在webview中加载post响应的两种方法:

  1. webview.loadData() :就像你在解决scheme中发布的一样。 但是“通过这种机制加载的内容不具备从networking加载内容的能力”。

  2. webview.postUrl() :如果后期响应需要从networking加载内容,请使用此方法。 (注:只能从API级别5,这意味着没有Android 1.6或更低)


 String postData = "username=my_username&password=my_password"; webview.postUrl(url,EncodingUtils.getBytes(postData, "BASE64")); 

(来源: http : //www.anddev.org/other-coding-problems-f5/webview-posturl-postdata-t14239.html )

我使用webView.loadData()做客户端的post,它会显示url的内容,我的代码:

 public static 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"); } 

使用函数webview_ClientPost():

 Map<String, String> mapParams = new HashMap<String, String>(); mapParams.put("param1", "111"); mapParams.put("param2", "222"); Collection<Map.Entry<String, String>> postData = mapParams.entrySet(); webview_ClientPost(webView1, "http://www.yoursite.com/postreceiver", postData); 

如果从一开始就使用WebView,它可以工作吗?

一个带有html / js的Web视图,它会自动显示结果。