Apache Camel получил неверный запрос статуса 400 от AWS VPC Endpont

#java #amazon-web-services #apache-camel #amazon-vpc

#java #amazon-веб-сервисы #apache-camel #amazon-vpc

Вопрос:

У меня есть Java-приложение, которое было создано с помощью Apache Camel. Приложение использует Apache Camel для создания HTTP-запроса к конечной точке AWS VPC.

Когда приложение Java отправляет HTTP-запрос, оно получает код состояния HTTP 400 (неверный запрос). Можно найти журнал потока VPC с трафиком (правильные IP-адреса источника и назначения).

С другой стороны, если мы используем команду curl для отправки того же HTTP-запроса, он возвращает 200 OK.

Какова возможная причина? Есть ли какая-либо конфигурация в Apache Camel для просмотра точного содержимого HTTP или отправленного необработанного заголовка HTTP / сообщения?

Комментарии:

1. URL-адрес, настроенный внутри Camel, начинается с http4 вместо обычного http или https.

Ответ №1:

Вы можете проверить, доступны ли Content-Type и другие обязательные заголовки запроса в Exchange.in.headers. Просто войдите в систему.заголовки в теге camel-simple. Я думаю, что 400 происходит из-за неправильного типа контента или плохой полезной нагрузки.

Комментарии:

1. Я попытался использовать curl, чтобы сделать запрос неправильного типа содержимого, но ответ был 415 вместо 400.

2. Распечатайте исключение и пример полезной нагрузки, которые вы используете здесь

Ответ №2:

Возможно, вы отправляете заголовки, которые не разрешены API, поскольку Camel автоматически сопоставляет заголовки сообщений с заголовками HTTP.

Компонент Camel camel-http4 использует библиотеку Apache HttpClient 4.x, и вы можете настроить его для регистрации необработанных HTTP-запросов.

Например, с помощью log4j вы бы добавили в свойства:

 log4j.logger.org.apache.http=DEBUG
  

Подробные параметры ведения журнала можно увидеть здесь:https://hc.apache.org/httpcomponents-client-4.5.x/logging.html