在Java中发送HTTP post请求时出现问题

时间:2011-04-20 13:04:58

标签: 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标头,并且它设置为text / plain ... 为什么? 我究竟做错了什么? 向身体发送请求的正确方法是什么?

解决方案:

好的..我明白了.. 谢谢skaffman,非常接近:) AbstractHttpEntity声明了setContentType函数...

抱歉打扰..

乌迪

1 个答案:

答案 0 :(得分:2)

假设这是HttpClient 4.1,那么你没有为StringEntity使用适当的构造函数,你可能需要指定mime类型以及charset,例如。

HttpEntity entity = new StringEntity(xmlString, "application/xml", HTTP.UTF_8);

请参阅javadoc

相关问题