2011-04-20 3 views
0

안녕하세요, XML 본문에 http 요청을 게시하려고합니다. 이 내 코드입니다 :Java에서 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(); 
    } 
} 

임은 애플리케이션 서버 (400)에서 잘못된 요청을 받고, 디버깅에 그 또한의 ContentType 헤더가 HttpEntity 및/일반 텍스트 그것의 설정을 볼 수 있습니다 ... 이유는 무엇입니까? 내가 뭘 잘못하고 있니? 본문과 함께 요청을 보내는 올바른 방법은 무엇입니까?

해결책 :

OK .. 내가있어 .. 감사합니다 skaffman, 즉 ... 아주 가까이 : AbstractHttpEntity가로 setContentType 기능을 선언했다

에 ..

귀찮게 죄송합니다 Udi

+0

당신이 아파치 http 클라이언트 라이브러리 (그리고 어떤 버전)를 사용하고 있는지 언급 할 가치가있다. –

답변

2

이것이 HttpClient 4.1이라고 가정하고 StringEntity에 적절한 생성자를 사용하지 않는다면, MIME 유형과 문자를 지정해야 할 것입니다 et.

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

javadoc을 참조하십시오.

관련 문제