Проблема отправки HTTP пост-запроса в Java - PullRequest
0 голосов
/ 20 апреля 2011

Эй, Я пытаюсь опубликовать запрос http с телом xml. Это мой код:

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 ... Зачем? Что я делаю неправильно? Как правильно отправить запрос с телом?

РЕШЕНИЕ:

ОК .. Я понял ... Спасибо скаффман, это было довольно близко :) AbstractHttpEntity объявляет функцию setContentType ...

Извините за беспокойство ..

Уди

1 Ответ

2 голосов
/ 20 апреля 2011

Предполагая, что это HttpClient 4.1, тогда вы не используете соответствующий конструктор для StringEntity, вам, вероятно, нужно указать тип mime, а также кодировку, например,

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

См. Javadoc .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...