Сообщение с HttpClient возвращает неверный запрос - PullRequest
0 голосов
/ 29 августа 2018

Я использую Java, Spring boot и Apache HttpClient, чтобы попытаться отправить запрос по почте. Документацию по ресурсу, к которому я пытаюсь добраться, можно найти здесь:

https://docs.enotasgw.com.br/v2/reference#incluiralterar-empresa

Ниже мой код:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(incluirEmpresa);
post.setHeader("Content-Type", "application/json");
post.setHeader("Accept", "application/json");
post.setHeader("Authorization", "Basic " + apiKey);
try {
    StringEntity entity = new StringEntity(json);
    //tried to add these two lines to see if they would fix the error, but it is the same
    entity.setContentEncoding("application/json");
    entity.setContentType("application/json");
    post.setEntity(entity);
    System.out.println(json);
    System.out.println("======================");
    CloseableHttpResponse response = httpClient.execute(post);
    System.out.println(response.getStatusLine().getReasonPhrase() + " - " + response.getStatusLine().getReasonPhrase());
    idEmpresa = response.getEntity().getContent().toString();
}

Мой ответ - 400 - Плохой запрос. По ссылке выше на интерактивную документацию, когда я публикую свой Json, я получаю сообщение об ошибке повторяющейся записи, чего я и ожидаю, поскольку отправляемая информация уже находится в базе данных.

Поскольку интерактивная документация возвращает ошибку дубликата, я знаю, что проблема не в моем формате json, а в моем запросе на публикацию. В документации есть примеры на C #, но не на Java, что я и использую.

Кстати, переменная json - это строка на случай, если это уместно.

Может кто-нибудь попытаться указать мне, что не так с моим почтовым индексом?

1 Ответ

0 голосов
/ 21 сентября 2018

Узнал, чего мне не хватало. После просмотра того, что было отправлено в API, я заметил, что json не был в ожидаемом формате. Итак, я провел некоторое исследование и обнаружил, что, по крайней мере, для моего случая, установка заголовков с типом контента была недостаточной, я также должен был установить Entity, который был установлен на HttpPost, чтобы сделать это, мне пришлось изменить это строка кода:

StringEntity entity = new StringEntity(json);

к этому:

StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);

После этого изменения запросы начали работать, как и ожидалось.

...