嘿, 我正在尝试使用 xml 正文发布 http 请求。 这是我的代码:
public void setBla(String url, String cookie, SomeEnum status) {
String availabilityUrl = url;
HttpPost httpPost = new HttpPost(availabilityUrl + VERSION_TEXT);
httpPost.setHeader(HttpHeaders.AUTHORIZATION, LP_AUTH_HEADER_VALUE);
httpPost.setHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_XML);
httpPost.setHeader("X-HTTP-Method-Override", HttpMethod.PUT);
httpPost.setHeader("Cookie", cookie);
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML);
HttpResponse response = null;
try {
HttpEntity entity = new StringEntity("<availability><chat>" + status + "</chat></availability>", HTTP.UTF_8);
httpPost.setEntity(entity);
response = m_httpClient.execute(httpPost);
}
catch (Exception e) {
e.printStackTrace();
}
}
我从 AppServer (400) 收到错误请求,在调试中我可以看到 HttpEntity 也有 ContentType header 并将其设置为 text/plain... 为什么? 我究竟做错了什么? 发送带有正文的请求的正确方法是什么?
解决方案:
好的..我明白了.. 谢谢斯卡夫曼,那已经非常接近了:) AbstractHttpEntity 声明 setContentType 函数...
抱歉打扰了..
乌迪
最佳答案
假设这是 HttpClient 4.1,那么您没有为 StringEntity
使用适当的构造函数,您可能需要指定 mime 类型以及字符集,例如
HttpEntity entity = new StringEntity(xmlString, "application/xml", HTTP.UTF_8);
参见javadoc .
关于java - 在 Java 中发送 HTTP POST 请求时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5730785/