#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