java - 在 Java 中发送 HTTP POST 请求时出现问题

标签 java http httpclient

嘿, 我正在尝试使用 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/

上一篇:Java类路径问题

下一篇:java - 使类可变

相关文章:

java - Elasticsearch 可能无法启动..尝试了多个版本

java - LinkedList.peek() 导致空指针异常

http - "404 redirect"是合法的重定向吗?

java - OSGi - 我应该为每个包创建服务跟踪器吗?

使用 Socks 的 Java JDBC 连接

node.js - 在 NodeJS 结束之前关闭 Http 响应流

apache - 对某些页面强制使用 https,对所有其他页面强制使用 http

java - 使用 HttpClient 使用双斜杠访问 URL

.net - 如何使用 .NET HttpClient 上传到 Amazon S3 而不使用他们的 SDK

java - 要下载的文件扩展名类型