在Android上发送Post请求和HttpHeaders

我需要发布数据到服务器(“referer”头字段),并在Webview中加载响应。

现在,有不同的方法(从Android WebView )做它的一部分,就像有:

void loadUrl(String url, Map<String, String> additionalHttpHeaders) 

使用指定的额外HTTP标头加载给定的URL。

 void loadData(String data, String mimeType, String encoding) 

使用“数据”schemeURL将给定数据加载到此WebView中。

 void postUrl(String url, byte[] postData) 

使用“POST”方法将postData加载到此WebView中。

loadUrl()允许发送HttpHeaders但不允许发送发布数据,其他方法似乎不允许发送HttpHeaders。 我错过了什么,或者我正在尝试的是不可能的?

Solutions Collecting From Web of "在Android上发送Post请求和HttpHeaders"

您可以像这样手动执行HttpPost

 HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.yoursite.com/postreceiver"); // generating your data (AKA parameters) List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("ParameterName", "ParameterValue")); // ... // adding your headers httppost.setHeader("HeaderName", "HeaderValue"); // ... // adding your data httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); 

String获取response

 BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); StringBuilder builder = new StringBuilder(); for (String line = null; (line = reader.readLine()) != null;) { builder.append(line).append("\n"); } String html = builder.toString(); 

现在,您可以使用loadData()html放入您的yourWebView

 yourWebView.loadData(html ,"text/html", "UTF-8");