我可以看到Android文档中有两种不同的方法可以发布数据并添加标题。
For setting Headers
public void loadUrl (String url, Map<String, String> additionalHttpHeaders)
For setting Post Data
public void postUrl (String url, byte[] postData)
但我真正需要的是将数据和标题一起发布。 (意味着我想要一个同时完成这项任务的方法吗?)
有人可以帮我解决这个问题。
谢谢:)
答案 0 :(得分:4)
我最近碰到了同样的问题,几个小时后就解决了。
以下是我的代码段,其中包含一些注释:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(getPostUrl());
// example of adding extra header "Referer"
httpPost.addHeader("Referer", getReferer());
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
for (PostItem postItem : getPostItems()) {
// key value post pairs
// add post parameters in array list
postParameters.add(new BasicNameValuePair(postItem.getKey(), postItem.getValue()));
}
HttpResponse response = null;
try {
mWebView.getSettings().setJavaScriptEnabled(true);
httpPost.setEntity(new UrlEncodedFormEntity(postParameters));
response = httpclient.execute(httpPost);
BasicResponseHandler responseHandler = new BasicResponseHandler();
String htmlString = responseHandler.handleResponse(response);
// important!! is to fill base url
mWebView.loadDataWithBaseURL(getPostUrl(), htmlString, "text/html", "utf-8", null);
} catch (Exception e){
// handle errors
}
答案 1 :(得分:0)
框架似乎没有提供这些功能。
查看WebViewCore的源代码(https://android.googlesource.com/platform/frameworks/base/+/eclair-release%5E2/core/java/android/webkit/WebViewCore.java,第889行),只会在loadUrl
调用中处理其他标头,而不会在postUrl
中处理。