Подтвердить что ты не робот

Отправить запрос на отправку вместе с HttpHeaders на Android

Мне нужно отправить данные на сервер (с полем заголовка "referer" ) и загрузить ответ в Webview.

Теперь существуют различные методы (от Android WebView), чтобы сделать его части, например:

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

Загружает указанный URL с указанными дополнительными заголовками HTTP.

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

Загружает данные в этот WebView, используя URL-адрес схемы данных.

void postUrl(String url, byte[] postData)

Загружает URL-адрес с помощью postData, используя метод POST в этот WebView.

loadUrl() позволяет отправлять HttpHeaders, но не позволяет отправлять почтовые данные, другие методы, похоже, не позволяют отправлять HttpHeaders. Я что-то пропущу или что пытаюсь, невозможно?

4b9b3361

Ответ 1

Вы можете выполнить 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);

Получите response как String:

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();

Теперь вы можете поместить html в yourWebView с помощью loadData():

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