ошибка 404 Не найдена в запросе веб-службы SOAP через CFHTTP

#coldfusion

#coldfusion

Вопрос:

У меня возникли большие проблемы при общении с веб-службой для нашей базы данных участников. Я получаю действительный результат из своего конверта SOAP при использовании SoapUI. Но когда я пытаюсь отправить тот же конверт, используя CFHTTP и CF9 (я знаю, я знаю), я получаю ошибку «404 не найдено», независимо от того, что я пытаюсь сделать. Доступ к URL-адресу в браузере выдает ошибку «отказано в доступе».

Вот что у меня есть в cfsavecontent:

 <cfsavecontent variable="soapBody">
    <cfoutput>
    <?xml version=“1.0” encoding=“utf-8”?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://membersuite.com/schemas" xmlns:con="http://membersuite.com/contracts">
       <soapenv:Header>
         <sch:ConciergeRequestHeader>
         <!--Optional:-->
         <sch:BrowserId></sch:BrowserId>
         <!--Optional:-->
         <sch:SessionId></sch:SessionId>
         <sch:AccessKeyId>MyAccessKey</sch:AccessKeyId>
         <!--Optional:-->
         <sch:AssociationId>MyAssociationID</sch:AssociationId>
         <sch:Signature>MySignature</sch:Signature>
         </sch:ConciergeRequestHeader>
       </soapenv:Header>
       <soapenv:Body>
          <con:LoginToPortal>
            <!--Optional:-->
            <con:portalUserName>username</con:portalUserName>
            <!--Optional:-->
            <con:portalPassword>password</con:portalPassword>
          </con:LoginToPortal>
       </soapenv:Body>
    </soapenv:Envelope>
    </cfoutput>
</cfsavecontent>
 

И вот мой cfhttp:

 <cfhttp url="https://soap.membersuite.com/mex" method="post" useragent="#CGI.http_user_agent#">
  <cfhttpparam type="header" name="charset" value="utf-8">
  <cfhttpparam type="header" name="mimetype" value="application/xml" /> 
  <cfhttpparam type="header" name="content-type" value="text/xml">
  <cfhttpparam type="header" name="SOAPAction" value="http://membersuite.com/contracts/IConciergeAPIService/LoginToPortal" />
  <cfhttpparam type="header" name="accept-encoding" value="no-compression" />
  <cfhttpparam type="header" name="content-length" value="#len(trim(soapBody))#">
  <cfhttpparam type="xml" name="soapenv" value="#trim(soapBody)#" /> 
</cfhttp>
 

Сброс cfhttp выдает мне эту ошибку:

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

Мне кажется очевидным, что удаленный сервер сообщает мне, что он не может найти то, о чем я его прошу. Но это правильная конечная точка, и я вижу ее в WSDL:

 <wsdl:operation name="LoginToPortal">
    <wsdl:input wsaw:Action="http://membersuite.com/contracts/IConciergeAPIService/LoginToPortal" message="tns:IConciergeAPIService_LoginToPortal_InputMessage"/>
    <wsdl:output wsaw:Action="http://membersuite.com/contracts/IConciergeAPIService/LoginToPortalResponse" message="tns:IConciergeAPIService_LoginToPortal_OutputMessage"/>
</wsdl:operation>
 

Я также добавил сертификат SSL со страницы веб-службы в свой CF keystone; никаких изменений в сообщении об ошибке. Я в тупике и буду признателен за любые предложения! Опять же, я получаю ожидаемые результаты обратно через SoapUI. Большое вам всем спасибо!

Ответ №1:

Похоже, что он работает, если целевой URL-адрес изменен на https://soap.membersuite.com /. При использовании поддельных учетных данных ответ изменяется на «Указан недопустимый идентификатор ключа доступа» вместо 404.

 <cfhttp url="https://soap.membersuite.com/" method="post" useragent="#CGI.http_user_agent#">
  <cfhttpparam type="header" name="Content-Type" value="text/xml; charset=utf-8" /> 
  <cfhttpparam type="header" name="SOAPAction" value="http://membersuite.com/contracts/IConciergeAPIService/LoginToPortal" />
  <cfhttpparam type="header" name="Accept-Encoding" value="no-compression" />
  <cfhttpparam type="header" name="Content-Length" value="#len(trim(soapBody))#">
  <cfhttpparam type="body" value="#trim(soapBody)#" /> 
</cfhttp>
 

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

1. ЛОЛ! Это все? Итак, я попробовал ваше предложение, и я получил ошибку 400 bad request — прогресс! У меня было кое-что, оставшееся в моем запросе SOAP после тестирования. Я удалил его, обновил свои учетные данные, и это сработало!! Это потрясающе, большое тебе спасибо, Ли! Я действительно ценю помощь (снова)! Удачных вам выходных!

2. Заголовки можно было бы немного подправить, но … да, именно так. У меня сегодня тоже был такой. Просто обожаю, когда что-то такое маленькое вызывает такие головные боли 😉

3. Что ж, я обязательно начну внимательнее рассматривать вещи, которые должны быть для меня более понятными. Большое тебе спасибо за то, что предоставила этот «поучительный момент», Ли. Я не хочу признаваться, сколько времени я потратил, пытаясь разобраться в этом, прежде чем опубликовать здесь! 🙂 Я очень ценю ваше терпение и помощь!

4. Хех, всегда пожалуйста. Иногда это просто вторая пара глаз или воспоминание о том, чтобы немного отойти. Как только я, наконец , сделал это вчера, моя собственная глупость с лишением сна мгновенно стала понятной 😉 В любом случае, по крайней мере, теперь мы можем наслаждаться выходными!

5. Действительно, мы можем! И я надеюсь, что у вас он будет отличным. Ваше здоровье! И еще раз большое вам спасибо. Я действительно ценю это.