Заявка на Android WebView с пользовательскими заголовками

Я мог видеть, что в документах Android есть два отдельных метода для публикации данных и добавления заголовков.

For setting Headers public void loadUrl (String url, Map<String, String> additionalHttpHeaders) For setting Post Data public void postUrl (String url, byte[] postData) 

Но я действительно обязан размещать данные вместе с заголовками. (Значит, мне нужен единственный метод, который выполняет обе задачи?)

Может кто-нибудь, пожалуйста, помогите мне с этим.

Благодаря 🙂

Solutions Collecting From Web of "Заявка на Android WebView с пользовательскими заголовками"

Недавно я столкнулся с такой же проблемой и через пару часов решил это.

Вот мой фрагмент кода с некоторыми комментариями:

 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 } 

Кажется, что структура не обеспечивает эти функции вместе.

Посмотрев исходный код WebViewCore ( https://android.googlesource.com/platform/frameworks/base/+/eclair-release%5E2/core/java/android/webkit/WebViewCore.java , строка 889), дополнительные заголовки Обрабатываются только в вызове loadUrl и никогда в postUrl .