android - 在 Android 上发送 Post 请求和 HttpHeaders

标签 android post webview http-headers android-webview

我需要将数据发布到服务器(带有“referer” header 字段)并在 Webview 中加载响应。

现在,有不同的方法(来自 Android WebView)来完成其中的一部分,例如:

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

使用指定的附加 HTTP header 加载给定的 URL。

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

使用“数据”方案 URL 将给定数据加载到此 WebView 中。

void postUrl(String url, byte[] postData)

使用“POST”方法将带有 postData 的 URL 加载到此 WebView 中。

loadUrl() 允许发送HttpHeaders 但不允许发送post 数据,其他方法似乎不允许发送HttpHeaders。我是不是遗漏了什么或者我正在尝试的是不可能的?

最佳答案

您可以像这样手动执行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);

响应作为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();

现在您可以使用 loadData()html 放入 yourWebView:

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

关于android - 在 Android 上发送 Post 请求和 HttpHeaders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154756/

相关文章:

react-native - 使用 React Native 填写在 Web View 中打开的网页的表单字段

android - 更新夜间模式的小部件

android - 处理形状可绘制差异的最佳方法 Android 2.3.5 vs 4.0

android - 何时使用应用程序 ID 或包名称(又名 PackageManager#getLaunchIntentForPackage 方法名称是否不正确?)

java - 从 Java servlet 中的 POST 请求获取请求有效负载

java - 如何在 Apache Olingo 中创建实体?

android - 在 IMAP 中存储邮件的附加数据

PHP打开另一个带有POST数据的网页

android - 根据点击更改 webview 的 url

javascript - Android Webview不执行某些JavaScript