Helpers - компьютеры, интернет, программирование

Сообщение с HttpClient возвращает неверный запрос

Я использую 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 — это строка на случай, если это уместно.

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


  • К сожалению, у нас нет ключа API, и мы не можем попробовать это. Но 400 — плохой запрос. ContentEncoding должно быть именем набора символов, а не типом mimetype. Попробуйте установить UTF-8 29.08.2018

Ответы:


1

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

StringEntity entity = new StringEntity(json);

к этому:

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

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

21.09.2018
  • Они недостаточно четко рекламируют это в примерах, которые я нашел в Интернете, но это абсолютно правильно, и у меня была такая же проблема. 07.07.2020
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..