Toon posts:

coldfusion wsdl & platform onafhankelijk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een project om met coldfusion een webservice te bouwen. Dit werkt goed, met de nieuwe CFMX werkt het heel makkelijk. Je kan een component bouwen, met daarin functies, binnen CF aanroepen werkt ook heel simpel. Maar oproepen vanaf een ander platform daar begint de moeilijkheid.

Doordat CF WSDL een eigen soap/wsdl indeling maakt is het aanroepen niet standaard. althans er is wel een standaard er wordt gebruik gemaakt van deze namespaces:

- <wsdl:definitions targetNamespace="http://pilot1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:intf="http://pilot1" xmlns:impl="http://pilot1-impl" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/">

Ik heb ervaring met webprogrammeren (asp/php) maar dit is de eerste keer dat ik webservices ga gebruiken. Als ik de SOAP structuur in ASP gebruik werkt het gewoon goed en kan ik platformonafhankelijk werken. Ik hier hou ik me aan de standaard zoals dit voorbeeld:

strTmp = _
"<SOAP:Envelope xmlns:SOAP=""urn:schemas-xmlsoap-org:soap.v1"">" & _
"<SOAP:Header></SOAP:Header>" & _
"<SOAP:Body>" & _
"<m:GetSalesTaxResponse xmlns:m=""urn:myserver/soap:TaxCalc"">" & _
"<SalesTax>" & varSalesTax & "</SalesTax>" & _
"</m:GetSalesTaxResponse>" & _
"</SOAP:Body>" & _
"</SOAP:Envelope>"

Concreet: Wat wil ik weten. Hoe kan ik zorgen dat ik met CFMX platformonafhankelijk kan werken, zijn er proxy's die me van die brij van gegenereerde code heel kan helpen. Ik heb al diverse tutorials en site's afgezocht maar nergens kon ik een bevredigend antwoord vinden.

Verwijderd

Topicstarter
Deze vraag werkt niet, ik heb het anders gedaan nu. ik werk gewoon met een coldfusion bestand zonder WSDL. ik heb een ASP soapservice gemaakt:

<%
Set objReq = Server.CreateObject("Microsoft.XMLDOM")


objReq.Load Request

strQuery = "SOAP:Envelope/SOAP:Body/m:GeefAantal/Aantal"
Aantal = objReq.SelectSingleNode(strQuery).Text
strQuery = "SOAP:Envelope/SOAP:Body/m:GeefAantal/Aantal2"
Aantal2 = objReq.SelectSingleNode(strQuery).Text
strQuery = "SOAP:Envelope/SOAP:Body/m:GeefAantal/WatDoen"
WatDoen = objReq.SelectSingleNode(strQuery).Text

Select case WatDoen
case "/"
Resultaat = cint(Aantal) / cint(Aantal2)
case "*"
Resultaat = cint(Aantal) * cint(Aantal2)
case "+"
Resultaat = cint(Aantal) + cint(Aantal2)
case "-"
Resultaat = cint(Aantal) - cint(Aantal2)
end select

strTmp = _
"<SOAP:Envelope xmlns:SOAP=""urn:schemas-xmlsoap-org:soap.v1"">" & _
"<SOAP:Header></SOAP:Header>" & _
"<SOAP:Body>" & _
"<m:GeefAantalReturn xmlns:m=""http://www.lttvscylla.com"">" & _
"<Aantal>" & Resultaat & "</Aantal>" & _
"</m:GeefAantalReturn>" & _
"</SOAP:Body>" & _
"</SOAP:Envelope>"

Response.Write strTmp

%>

En dit is de client in coldfusion:

<CFSET SoapURL = "http://localhost/SOAPtest/soap2.asp">
<CFSAVECONTENT VARIABLE="strpost">
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Header></SOAP:Header>
<SOAP:Body>
<m:GeefAantal xmlns:m="http://www.e-vision.nl">
<Aantal>2</Aantal>
<Aantal2>4</Aantal2>
<WatDoen>*</WatDoen>
</m:GeefAantal>
</SOAP:Body>
</SOAP:Envelope>
</CFSAVECONTENT>

<CFHTTP URL="#SoapURL#" METHOD="post" RESOLVEURL="false">
<CFHTTPPARAM TYPE="formfield" NAME="soapmessage" VALUE="#strpost#">
<CFHTTPPARAM TYPE="cgi" NAME="SOAPAction" VALUE="acknowledgeorder">
</CFHTTP>
<hr size="1"/>
<CFOUTPUT>#cfhttp.header#<p /></CFOUTPUT>
<CFOUTPUT>#cfhttp.filecontent#</CFOUTPUT>

De enige reply die ik krijg is een internal server error. Terwijl ik met een ASP client wel goed kan werken.