Как сформировать вызов cfhttp для использования пользовательского API веб-сервиса - PullRequest
2 голосов
/ 09 декабря 2010

Я был разработчиком cf в течение 11 лет, но смущался, когда говорил, что ничего не сделал для веб-сервисов.

Как мне сформировать вызов cfhttp для использования следующего API веб-сервиса, предоставляемогопоставщик?

Мыло 1.2 Запрос:

POST /Portal/internet.asmx HTTP/1.1
Host: 192.168.222.240
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <Usage xmlns="http://portal/internet.asmx">
      <SessionID>string</SessionID>
      <CustomerCode>int</CustomerCode>
      <FullUserName>string</FullUserName>
      <StartDate>dateTime</StartDate>
      <EndDate>dateTime</EndDate>
    </Usage>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

Мыло 1.2 Ответ:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <UsageResponse xmlns="http://portal/internet.asmx">
      <UsageResult>
        <xsd:schema>schema</xsd:schema>xml</UsageResult>
    </UsageResponse>
  </soap12:Body>
</soap12:Envelope>

Я хочу сделатьэто вручную на данный момент (я знаю о cfinvoke и createobject).Я нашел следующее из блога Бена Наделя, но получаю ошибку «сбой соединения».Я думаю, мне просто нужно, чтобы кто-то проверил очевидные недостатки в коде, прежде чем я выясню, действительно ли это связано с подключением / авторизацией.

<cfsavecontent variable="soapBody">
 <cfoutput>
  <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
          <soap:Body>
            <Usage xmlns="http://portal/internet.asmx">
              <SessionID>F7B3B3FB-DE35-45CB-A785-8229E91FAEC9</SessionID>
              <CustomerCode>1112221</CustomerCode>
              <FullUserName>MR DAVE GEORGE</FullUserName>
              <StartDate>2010-01-01</StartDate>
              <EndDate>2009-01-01</EndDate>
            </Usage>
          </soap:Body>
        </soap:Envelope>

 </cfoutput>
</cfsavecontent>


<cfhttp
 url="http://portal/internet.asmx"
 method="post"
 result="httpResponse">

 <cfhttpparam
  type="header"
  name="SOAPAction"
  value="http://portal/internet.asmx/Usage"
  />

 <cfhttpparam
  type="header"
  name="accept-encoding"
  value="no-compression"
  />

 <cfhttpparam
  type="xml"
  value="#trim( soapBody )#"
  />

</cfhttp>



 <cfoutput>
 #httpResponse.fileContent# <!--- ouputs "connection failure" --->
    </cfoutput> 

Большое спасибо, Пол

Ответы [ 2 ]

0 голосов
/ 10 апреля 2011

Самый простой способ - создать заглушки Java для вашего веб-сервиса, затем создать объект java и выполнить вызовы объекта java в coldfusion.

  1. Создайте заглушки, встряхните их, поместите в папку lib и перезапустите coldfusion
  2. Убедитесь, что вы можете увидеть jar-файл в своем пути (посмотрите в cf admin в разделе Summary).
  3. используйте это так:



    args = structNew ()
    myObj.webservicemethod (арг);

0 голосов
/ 09 декабря 2010

Если взять слово и предположить, что не может сделать это с CF, потому что, как указал @Henry, это SOAP 1.2.Похоже, что для этого требуется непосредственное использование Java, в частности API Soap with Attachments для Java (SAAJ).Это в пакете java javax.xml.soap, который не является частью стандартного дистрибутива Java.Вместо этого это отдельная загрузка из Oracle.

Лучшее сквозное руководство, которое я смог найти при настройке соединения с конечной точкой, построении и отправке запроса, получении и анализе ответа с сайта IBM Developerworks.Имейте в виду, что он задействован, и для этого потребуется установить несколько jar-файлов в путь к классам установки ColdFusion из вышеупомянутой загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...