具有自定义标题的Android WebView发布请求

时间:2014-02-13 12:39:46

标签: android post webview http-headers

我可以看到Android文档中有两种不同的方法可以发布数据并添加标题。

For setting Headers
public void loadUrl (String url, Map<String, String> additionalHttpHeaders)


For setting Post Data
public void postUrl (String url, byte[] postData)

但我真正需要的是将数据和标题一起发布。 (意味着我想要一个同时完成这项任务的方法吗?)

有人可以帮我解决这个问题。

谢谢:)

2 个答案:

答案 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中处理。

相关问题