HttpClient сообщение с xml - PullRequest
       20

HttpClient сообщение с xml

0 голосов
/ 05 марта 2020

Я нахожусь в стадии моего приложения, где мне нужно связаться с внешним сервером и опубликовать на нем немного xml. Я пробовал использовать HttpClient и другие подходы, но ни один из них не работает, и я могу понять, почему. Согласно спецификации c другого сервера, он принимает сообщение xml как документ xml с типом содержимого, указанным в заголовке как text / xml.

Первый подход I попытался сделать следующее:

    HttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();
    HttpPost post = new HttpPost(myURL);
    String xml = createXmlWithDocument();
    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    urlParameters.add(new BasicNameValuePair("xml", xml));
    UrlEncodedFormEntity UrlEntity = new UrlEncodedFormEntity(urlParameters, "UTF-8");
    post.setEntity(UrlEntity);
    HttpResponse httpResponse = client.execute(post);
    BufferedReader rd = new BufferedReader(new 
    InputStreamReader(httpResponse.getEntity().getContent()));
    StringBuffer responseResult = new StringBuffer();
    String line = "";
    while ((line = rd.readLine()) != null)
    {
        responseResult.append(line);
    }
    LogResponse(responseResult);

Выше работает нормально, как я могу подключиться к серверу (responseCode = 200), но он ничего не получает. Я подправил код, пытаясь добавить несколько заголовков:

    post.addHeader("Content-Type", "text/xml");

или путем установки простоты типа содержимого и кодировки:

    UrlEntity.setContentType("text/xml");
    UrlEntity.setContentEncoding("UTF-8");

перед выполнением публикации, но сервер в этот момент отвечает мне с:

Обнаружено исключение: org. apache .http.NoHttpResponseException: xxx не отвечает

Другой подход был следующим:

    HttpEntity entity = new ByteArrayEntity(xml.getBytes("UTF-8"));
    post.setEntity(entity);
    HttpResponse httpResponse = client.execute(post);

Где сервер отвечает мне с 404 не найден

Другой был с:

    StringEntity Stringentity = new StringEntity(xml, ContentType.create(
            "text/xml", Consts.UTF_8));
    Stringentity.setChunked(true);
    post.setEntity(Stringentity);
    HttpResponse httpResponse = client.execute(post);

Где я снова получаю 404 в качестве ответа.

Я чувствую, что я очень близок к завершению с первым подходом, но, возможно, я неправильно устанавливаю content-type / headers / et c. Любое предложение, пожалуйста?

В качестве главы я использую httpClient v4.5.3

Спасибо

...