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

Vip*_*hah 14 post android 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)
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢 :)

Jar*_*lik 5

我最近遇到了同样的问题,几个小时后就解决了。

这是我的代码段,并带有一些注释:

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
}
Run Code Online (Sandbox Code Playgroud)


小智 0

该框架似乎没有同时提供这些功能。

查看WebViewCore的源代码(https://android.googlesource.com/platform/frameworks/base/+/eclair-release%5E2/core/java/android/webkit/WebViewCore.java,第889行),附加标头仅在调用中处理loadUrl,而不会在postUrl.