Has any built a successful call to one of StrikeIron's many web
service products using OpenBD?
Our enterprise uses their USPS address validation product, which takes
a user provided address, insures it exists, normalizes it to CASS stds
and adds geographic, carrier, county, congressional data, etc... The
credentials needed to validate a wsdl request can either be passed in
the header, or via service params. This example uses the former,
trying the later didn't seem to help.
I have tried my existing version of my own code (works on CF6,1) and
the generic sample code provided by StrikeIron here:
http://www.strikeiron.com/ProductDetail.aspx?p=198 (which works on
CF8,0,1). Both will work in CF, but throw an error on OpenBD 1.1
STRIKEIRON SAMPLE CODE START
<cfscript>
args = structNew();
//construct the feed list
args.addressLine1 = '1060 W Addison St';
args.addressLine2 = '';
args.city_state_zip = 'Chicago IL';
args.firm = '';
args.urbanization = '';
args.casing = 'Upper';
//ru
ru = XmlNew();
ru.LicenseInfo = XmlElemNew(ru,"http://
ws.strikeiron.com","LicenseInfo");
ru.LicenseInfo.RegisteredUser = XmlElemNew(ru,"http://
ws.strikeiron.com","RegisteredUser");
ru.LicenseInfo.RegisteredUser.UserID = XmlElemNew(ru,"http://
ws.strikeiron.com","UserID");
ru.LicenseInfo.RegisteredUser.UserID.XmlText =
"ins...@youremail.here";
ru.LicenseInfo.RegisteredUser.Password = XmlElemNew(ru,"http://
ws.strikeiron.com","Password");
ru.LicenseInfo.RegisteredUser.Password.XmlText = "yourPassword";
//ru.LicenseInfo.UnregisteredUser = XmlElemNew(ru,"http://
ws.strikeiron.com","UnregisteredUser");
//ru.LicenseInfo.UnregisteredUser.EmailAddress = XmlElemNew
(ru,"http://ws.strikeiron.com","EmailAddress");
//ru.LicenseInfo.UnregisteredUser.EmailAddress.XmlText =
"ins...@youremail.here";
//instantiate the object
request.service = createObject("webservice","http://ws.strikeiron.com/
USAddressVerification4_0?WSDL");
hdr=addSOAPRequestHeader(request.service,"http://
ws.strikeiron.com","LicenseInfo",ru.LicenseInfo);
request.response = request.service.VerifyAddressUSA
(argumentCollection = args);
</cfscript>
<html>
<body>
<cfoutput>
<b>Inputs:</b><br>
<b>RegisteredUser:</b> #ru.LicenseInfo.RegisteredUser.UserID# <br>
<b>Address1:</b> #args.addressLine1# <br>
<b>Address2:</b> #args.addressLine2# <br>
<b>City State Zip:</b> #args.city_state_zip# <br><br>
<b>Results (getCounty):</b><br>
<b>County:</b> #request.response.getCounty()#<br><br>
</cfoutput>
<cfdump var="#request.response#">
</body>
</html>
STRIKEIRON SAMPLE CODE END
The service works with valid credentials (or a validated test email)
on ColdFusion, but OpenBD throws the following General Runtime Error
(no stack trace for GRE's):
ERROR SNIP START
Type Application
Detail Unrecognized error code: Invalid web service operation. Cannot
locate operation VerifyAddressUSA that accepts parameters: { struct }
Tag Context CFSCRIPT (/usr/local/tomcat/webapps/openbd/manageit/
developers/testAvs.cfm, Line=1, Column=1)
Source
28: //instantiate the object
29: request.service = createObject("webservice","http://
ws.strikeiron.com/USAddressVerification4_0?WSDL");
30: hdr=addSOAPRequestHeader(request.service,"http://
ws.strikeiron.com","LicenseInfo",ru.LicenseInfo);
31: request.response = request.service.VerifyAddressUSA
(argumentCollection = args);
32:
ERROR SNIP END
Just running these two lines on both systems will reveal some subtle
differences in the returned object:
<cfset request.service = createObject("webservice","http://
ws.strikeiron.com/USAddressVerification4_0?WSDL")>
<cfdump var="#request.service#">
This appears to be a compatibility issue, and - without a workaround -
represents a pretty significant issue in my development plans.
I'm running the J2EE version 1.1 with Apache Tomcat/6.0.14 on Ubuntu
Linux 8.04.1. The JRE is 1.6.0_10-b33. FYI: My local CF8 server is
using Java 1.6.0_04 and VM 10.0-b19
As always, your help is greatly appreciated. Contact me if you need
more. Thanks!
Alan K Holden