Coldfusion публикует веб-сервис с использованием SOAP

Я пытаюсь создать веб-службу, которую можно использовать с помощью SOAP. Я тренировался с обычными веб-сервисами, которые возвращают любые значения, но знаю, что хочу проверить, какие элементы в SOAP: BODY необходимы, и вернуть их с ответом. Я нашел методы

ПолучитьСоапЗапрос()

и

ДобавитьМыльныйОтклик()

в livedoc от Adobe, но не понимаю, как ими пользоваться. Я видел объяснение запроса и ответа на w3school.com.

я пытался решить проблему с тегами "cfsavecontent"

<cffunction
        name="soap"
        access="remote"
        returntype="any"
        output="false">

        <cfsavecontent variable="soapMessage">
            <?xml version="1.0">
            <soap:Envelope
                xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
                soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

                <soap:Header>

                </soap:Header>

                <soap:Body>
                     <m:GetPriveResponse xmlns:m="namespace">
                         <m:Price>1.90</m:Price>
                    </m:GetPriceResponse>
                </soap:Body>        
             </soap:Envelope>
         </cfsavecontent>

но это работает, только если cffunction имеет returntype="any". Тип "xml" возникает ошибка.

спасибо за помощь


person Alex Cio    schedule 03.05.2012    source источник


Ответы (2)


Самый простой способ создать веб-сервис в CF, см.

Создание компонентов для веб-служб http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec13a13-7fe2.html

Публикация веб-служб http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-78b7.html

person Henry    schedule 03.05.2012
comment
Я только что понял, что это веб-служба, если вы добавите доступ к параметру для удаленного доступа, потому что я получил описание после добавления? wsdl, но не подумал об этом. - person Alex Cio; 03.05.2012
comment
Но как задать параметры, которые будут вызываться через мыло. И как установить параметр в теле мыла, чтобы веб-служба coldfusion могла быть получена правильно.... И возвращает ли веб-служба автоматически в правильном формате или какой тип возврата мне нужно установить.... - person Alex Cio; 03.05.2012
comment
Внимательно прочитайте и следуйте инструкциям. Ответы все есть. - person Henry; 03.05.2012

Я только что установил soapUI eclipse addon и вызвал WSDL, который включает аргумент сложного типа. После тестирования методов моего web service с аддоном я получил SOAP-сообщение, которое искал все время. Может быть, это кому-нибудь поможет, я просто долго искал это решение.

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"           
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:com="http://components.conner.somebody">
    <soapenv:Header/>
    <soapenv:Body>
          <com:echoAddress soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
          <input xsi:type="com:Address">
              <City xsi:type="xsd:string">?</City>
              <Country xsi:type="xsd:string">?</Country>
              <State xsi:type="xsd:string">?</State>
              <Street xsi:type="xsd:string">?</Street>
          </input>
          </com:echoAddress>
    </soapenv:Body>
</soapenv:Envelope>

Вот метод компонента холодного синтеза, который будет называться

<cffunction
    name="echoAddress"
    returnType="address"
    output="false"
    access="remote">

    <cfargument
        name="input"
        type="address">

    <cfreturn #arguments.input#>
</cffunction>
person Alex Cio    schedule 07.05.2012