Sending XML formatted text to web service
I have a series of forms that send information to various web services.
One is a login form, which consists of a username/password combo, and some other credentials specified in the code. My CF code looks like this:
<cfinvoke
webservice="https://my.web.service.url/login?wsdl"
method="userLookupBySession"
returnvariable="appauth">
<cfinvokeargument name="applicationName" value="MYAPP" />
<cfinvokeargument name="accessCode" value="123456" />
<cfinvokeargument name="sessionId" value="#session.appid#" />
<cfinvokeargument name="endUserIPAddress" value="#CGI.REMOTE_ADDR#" />
</cfinvoke>
And that works quite well.
Another form is a registration form. Like the one above, it accepts four arguments.
- Application name
- Access code
- User data, formatted as XML
- User's IP address.
Here's my code:
<cfxml variable="userData">
<cfoutput>
<USER xmlns:xsi="_http://www.w3.org/2001/XMLSchema-instance">
<ROW NUM="1">
<LOGIN_ID>#htmleditformat(userid)#</LOGIN_ID>
<PASSWORD>#htmleditformat(FORM.password)#</PASSWORD>
<NAME_LAST>#htmleditformat(FORM.name_last)#</NAME_LAST>
<NAME_FIRST>#htmleditformat(FORM.name_first)#</NAME_FIRST>
<NAME_MI></NAME_MI>
<EMAIL>#htmleditformat(FORM.email)#</EMAIL>
<OFFICE_PHONE>#htmleditformat(FORM.office_phone)#</OFFICE_PHONE>
<OFFICE_EXT>#htmleditformat(FORM.office_ext)#</OFFICE_EXT>
<OFFICE_FAX></OFFICE_FAX>
<OFFICE_STREET1>#htmleditformat(FORM.office_street1)#</OFFICE_STREET1>
<OFFICE_STREET2>#htmleditformat(FORM.office_street2)#</OFFICE_STREET2>
<OFFICE_CITY>#htmleditformat(FORM.office_city)#</OFFICE_CITY>
<OFFICE_STATE>#htmleditformat(FORM.office_state)#</OFFICE_STATE>
<OFFICE_ZIP>#htmleditformat(FORM.office_zip)#</OFFICE_ZIP>
<ORG_TYPE>#htmleditformat(FORM.org_type)#</ORG_TYPE>
<ORG_NAME>#htmleditformat(FORM.org_name)#</ORG_NAME>
<USER_TYPE>J</USER_TYPE>
</ROW>
</USER>
</cfoutput>
</cfxml>
And:
<cfinvoke
webservice="https://my.web.service.url/register?wsdl"
method="registerRequest"
returnvariable="regged">
<cfinvokeargument name="applicationName" value="MYAPP" />
<cfinvokeargument name="accessCode" value="123456" />
<cfinvokeargument name="userData" value="#userData#" />
<cfinvokeargument name="endUserIPAddress" value="#CGI.REMOTE_ADDR#" />
</cfinvoke>
For some reason this fails, but if I have one of the server guys use the raw XML data, it works fine, so there's something wrong with my cfinvoke.
Has anyone else passed XML data to a web service? Is there any special thing you need to do to format it?
