=== THE ERROR ===
Web service operation "Track" with parameters
{parameters here...}
could not be found.
Here is a link to the WSDL file - Can anybody give me any suggestions??
http://pulizzi.azon1.com/Fedex/TrackService.wsdl
=== My Code ===
<CFINVOKE WEBSERVICE="http://pulizzi.azon1.com/FedEx/TrackService.wsdl"
returnVariable ="T2" Method="Track">
<cfinvokeargument name="UserCredential" Value="OSTgJ9WpY9KxYyjl">
<cfinvokeargument name="AccountNumber" Value="510087240">
<cfinvokeargument name="MeterNumber" Value="1194638">
<cfinvokeargument name="Value" Value="698970753640">
<cfinvokeargument name="Type" Value="TRACKING_NUMBER_OR_DOORTAG">
</CFINVOKE>
<CFDUMP VAR="#T2#">
Who is writing the web service?
<operation name="track" parameterOrder="parameters"> from wsdl does
not look right to me...
You have to submit the information as a structure (i think) at least you get
around this problem... Try the following code instead..
<cfset MyStruct= structNew()>
<cfset TrackRequest.AuthenticationDetail.UserCredential="OSTgJ9WpY9KxYyjl">
<cfset Trackrequest.ClientDetail.AccountNumber="510087240">
<cfset Trackrequest.ClientDetail.MeterNumber="1194638">
<cfset Trackrequest.PackageIdentifier.Value="698970753640">
<cfset Trackrequest.PackageIdentifier.Type="TRACKING_NUMBER_OR_DOORTAG">
<CFINVOKE WEBSERVICE="http://pulizzi.azon1.com/FedEx/TrackService.wsdl"
returnVariable ="T2" Method="Track">
<cfinvokeargument name="Trackrequest" value="#MyStruct#">
</CFINVOKE>
This will get you past the error that you are experiencing but will present
you with another which is "Non nillable element 'authenticationDetail' is
null." At least the service is recognized but there seems to be some problem
with referencing the specific arguments..
I am glad to know that someone else is trying this same thing.. Please let
know what else you come across on this perhaps together we can solve this
maddening issue..
Shane
<cfset TrackRequest = StructNew()>
<cfset TrackRequest.AuthenticationDetail.UserCredential="OSTgJ9WpY9KxYyjl">
<cfset TrackRequest.ClientDetail.AccountNumber="510087240">
<cfset TrackRequest.ClientDetail.MeterNumber="1194638">
<cfset TrackRequest.PackageIdentifier.Value="698970753640">
<cfset TrackRequest.PackageIdentifier.Type="TRACKING_NUMBER_OR_DOORTAG">
<cfdump var="#TrackRequest#">
<cfinvoke webservice="http://pulizzi.azon1.com/FedEx/TrackService.wsdl"
returnVariable ="T2" Method="Track">
<cfinvokeargument name="Trackrequest" value="#TrackRequest#">
</cfinvoke>
<cfdump var="#T2#">
How should I go about referencing these?
<HTML><HEAD><TITLE>Test2</TITLE></HEAD><BODY>
<cfdump var="#TrackRequest#">
<cfdump var="#T2#">
</BODY></HTML>
It does adventually dump TrackRequest but nothing after it.
<cfdump var="#TrackRequest#">
<cfinvoke webservice="http://pulizzi.azon1.com/FedEx/TrackService.wsdl"
returnVariable ="T2" Method="Track">
<cfinvokeargument name="Trackrequest" value="#TrackRequest#">
</cfinvoke>
<cfdump var="#T2#">
<cfoutput>
#T2.hashCode()#<BR>
#T2.getVersion()#<BR>
#T2.getNotifications()#<BR>
#T2.getNotifications()#<BR>
#T2.getTypeDesc()#<BR>
#T2.getTransactionDetail()#<BR>
#T2.getPagingToken()#<BR>
#T2.getHighestSeverity()#<BR>
#T2.getDuplicateWaybill()#<BR>
#T2.getMoreData()#<BR>
#T2.getTrackDetails()#<BR>
#T2.getClass()#<BR>
#T2.toString()#<BR>
</cfoutput>
Let me know if that returns anything for you.. The tracking information is
kept I believe in a structure in GetTrackDetails.. I am not certain how to
extract that information, hopefully after continued attepts I can get it and
end the week on a high note..
<cfdump var="#T2.getTrackDetails(0)#">
<cfdump var="#T2.getTrackDetails(0).getDeliverySignatureName()#">
<cfdump var="#TrackRequest#">
<cfinvoke webservice="http://pulizzi.azon1.com/FedEx/TrackService.wsdl"
returnVariable ="T2" Method="Track">
<cfinvokeargument name="Trackrequest" value="#TrackRequest#">
</cfinvoke>
<cfdump var="#T2#">
<cfdump var="#T2.getTrackDetails(0).getDestinationAddress()#">
<cfdump var="#t2.getTrackDetails(0).getStatusDescription()#">
<cfdump var="#t2.getTrackDetails(0).getDestinationAddress().getCity()#">
<cfdump
var="#t2.getTrackDetails(0).getDestinationAddress().getStateOrProvinceCode()#">
<cfdump var="#t2.getTrackDetails(0).getDestinationAddress().getCountryCode()#">
The above will work with FedEx's implementation to return some simple values
such as status destination etc. Good Luck..
Are you able to access other services as well? Perhaps there is some security
setting keeping you from doing this?
It uses RateAvailableServicesService_v2.wsdl
I'm looking for some general code to help me get on my way.
Thanks.
<cfset Rate = StructNew()>
<cfset Rate.WebAuthenticationDetail.UserCredential.Key = "xxxxxxxxxxxxxxxx">
<cfset Rate.WebAuthenticationDetail.UserCredential.Password =
"xxxxxxxxxxxxxxxxxxxxxxxxx">
<cfset Rate.ClientDetail.AccountNumber = "xxxxxxxxx">
<cfset Rate.ClientDetail.MeterNumber = "xxxxxxx">
<cfset Rate.Version.ServiceId = "crss">
<cfset Rate.Origin.PostalCode = "81505">
<cfset Rate.Origin.CountryCode = "US">
<cfset Rate.Destination.PostalCode = "90210">
<cfset Rate.Destination.CountryCode = "US">
<cfset Rate.ShipDate = DateFormat(now(),"yyyy-mm-dd")>
<cfset Rate.RateRequestPackageSummary.TotalWeight.Units = "LB">
<cfset Rate.RateRequestPackageSummary.TotalWeight.Value = "10.0">
<cfset Rate.Version.Major = "2">
<cfinvoke
webservice="http://www.yourwebsite.com/RateAvailableServicesService_v2.wsdl"
returnVariable="response" Method="rateAvailableServices">
<cfinvokeargument name="RateAvailableServicesRequest" value="#Rate#">
</cfinvoke>
<cfloop array="#response.getOptions()#" index="thisRate">
#thisRate.getServiceDetail().getServiceType().getValue()# -
#thisRate.getRatedShipmentDetails(0).getShipmentRateDetail().getTotalNetCharge()
.getAmount()#<br>
</cfloop>