2011-04-20 47 views
0

嘿, 我想用xml主体发布一个http请求。 这是我的代码:在Java中发送HTTP POST请求的问题

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

即时得到从应用服务器(400)错误请求,并在调试我可以看到HttpEntity也有ContentType标头和它设置为text/plain的... 为什么呢? 我在做什么错? 什么是正确的方式发送请求与身体?

SOLUTION:

OK ..我得到了它.. 谢谢skaffman,这是非常接近:) AbstractHttpEntity声明的setContentType功能...

对不起,打扰..

Udi

+0

值得一提的是,您正在使用Apache http客户端库(以及哪个版本)。 – 2011-04-20 13:09:40

回答

2

假设这是HttpClient 4.1,那么对于StringEntity您没有使用适当的构造函数,您可能需要指定MIME类型以及字符et,例如

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

请参阅javadoc