Содержимое файла ответа API пусто на сервере Lucee

Когда я вызываю api canadaPost на сервере Coldfusion, который дает ожидаемый ответ. Но когда я использую тот же вызов на сервере Lucee, он выдает сообщение об ошибке. Заголовок ответа "Oracle-iPlanet-Web-Server/7.0" для обоих серверов. Но mimetype ответа - это "application / octet-stream" на сервере Lucee и "application/vnd.cpc.ship.rate-v3+xml" на сервере coldfusion.

Это причина проблемы? Пожалуйста, дайте ваше предложение по этому поводу.

Вот мой код:

<cfset local.url = "https://ct.soa-gw.canadapost.ca/rs/ship/price">

<cfhttp url="#local.url#" method="post" result="httpResponse" username="#variables.username#" password="#variables.password#">
    <cfhttpparam type="header" name="Accept" value="application/vnd.cpc.ship.rate-v3+xml"/>
    <cfhttpparam type="xml" value="#trim(xmlRequest)#"/>
    <cfhttpparam type="header" name="Content-type" value="application/vnd.cpc.ship.rate-v3+xml">
</cfhttp>

Прикрепленный скриншот, сделанный на сервере Lucee:

введите описание изображения здесь

Спасибо

2 ответа

Решение

Наконец, я получил значение содержимого файла, изменив тип cfhttpparam "xml" на "body".

Мое исправление:

<cfset local.url = "https://ct.soa-gw.canadapost.ca/rs/ship/price">
<cfhttp url="#local.url#" method="post" result="httpResponse" username="#variables.username#" password="#variables.password#">
    <cfhttpparam type="header" name="Accept" value="application/vnd.cpc.ship.rate-v3+xml"/>
    <cfhttpparam type="body" value="#trim(xmlRequest)#"/>
    <cfhttpparam type="header" name="Content-type" value="application/vnd.cpc.ship.rate-v3+xml">
</cfhttp>

Спасибо, парень.

В Lucee (и ранее Railo) есть ошибка, из-за которой атрибуты имени пользователя и пароля указываются в <cfhttp> не отправляются при использовании SSL.

Чтобы обойти это, вы можете отправить заголовок авторизации, используя <cfhttpparam> следующее:

<cfhttp url="#local.url#" method="post" result="httpResponse">
    <cfhttpparam type="header" name="Accept" value="application/vnd.cpc.ship.rate-v3+xml"/>
    <cfhttpparam type="xml" value="#trim(xmlRequest)#"/>
    <cfhttpparam type="header" name="Content-type" value="application/vnd.cpc.ship.rate-v3+xml">
    <cfhttpparam type="header" name="Authorization" value="Basic #ToBase64( variables.username & ':' & variables.password )#">
</cfhttp>
Другие вопросы по тегам