Here is my code for doing FedEx tracking - feel free to email me off list
with questions.

=]
<cffunction name="trackShipment" access="public" returntype="struct">
<!--- Args --->
<cfargument name="shippingNumber" type="string" required="true">
 <!--- Logic --->
<cfscript>var local = {XMLPacket = '',cleanedXML = '',parsedData =
'',sReturn = {Status = false,ErrorMessage = ''}};</cfscript>
 <cftry>
<cfsavecontent variable="local.XMLPacket">
<cfoutput>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:v6="http://fedex.com/ws/track/v6";>
   <soapenv:Header/>
   <soapenv:Body>
      <v6:TrackRequest>
<v6:WebAuthenticationDetail>
<v6:UserCredential>
<v6:Key>#application.SiteDetails.FedEx.authKey#</v6:Key>
<v6:Password>#application.SiteDetails.FedEx.authPassword#</v6:Password>
</v6:UserCredential>
</v6:WebAuthenticationDetail>
<v6:ClientDetail>
<v6:AccountNumber>#application.SiteDetails.FedEx.authAcctNumber#</v6:AccountNumber>
<v6:MeterNumber>#application.SiteDetails.FedEx.authMeterNumber#</v6:MeterNumber>
</v6:ClientDetail>
         <v6:Version>
            <v6:ServiceId>trck</v6:ServiceId>
            <v6:Major>6</v6:Major>
            <v6:Intermediate>0</v6:Intermediate>
            <v6:Minor>0</v6:Minor>
         </v6:Version>
         <v6:PackageIdentifier>
            <v6:Value>#Arguments.shippingNumber#</v6:Value>
            <v6:Type>TRACKING_NUMBER_OR_DOORTAG</v6:Type>
         </v6:PackageIdentifier>
      </v6:TrackRequest>
   </soapenv:Body>
</soapenv:Envelope>
</cfoutput>
</cfsavecontent>

<cfhttp url="https://ws.fedex.com:443/web-services/track"; method="POST"
throwonerror="yes">
<cfhttpparam type="header" name="charset" value="utf-8">
            <cfhttpparam type="header" name="Accept-Encoding" value="*">
            <cfhttpparam type="header" name="TE" value="deflate;q=0">
            <cfhttpparam type="header" name="content-type" value="text/xml">
            <cfhttpparam type="header" name="content-length"
value="#len(local.XMLPacket)#">
            <cfhttpparam type="xml" name="message"
value="#trim(local.XMLPacket)#">
</cfhttp>
<cfscript>
//Clean the returned string
local.cleanedXML = CFHTTP.FileContent;
local.cleanedXML = CleanUpXMLString(local.cleanedXML);
//Strip out namespaces references - they just make parsing harder
local.cleanedXML =
local.cleanedXML.ReplaceAll("xmlns(:\w+)?=""[^""]*""","");
local.cleanedXML =
local.cleanedXML.ReplaceAll("diffgr(:\w+)?=""[^""]*""","");
local.cleanedXML =
local.cleanedXML.ReplaceAll("msdata(:\w+)?=""[^""]*""","");
local.cleanedXML = local.cleanedXML.ReplaceAll("xsi(:\w+)?=""[^""]*""","");
local.cleanedXML = local.cleanedXML.ReplaceAll("(</?)(\w+:)","$1");
 if(IsXML(TRIM(local.cleanedXML))){
//parse it
local.parsedData = XMLParse(local.cleanedXML);
writeDump(var=local.parsedData,abort=true);
}
else{
writeDump(var=CFHTTP.FileContent,abort=true);
}
</cfscript>
 <cfcatch type="any">
<cfdump var="#cfcatch#"><cfabort>
</cfcatch>
</cftry>
<!--- Return --->
<cfreturn local.sReturn />
</cffunction>

Alan Rother
Manager, Phoenix Cold Fusion User Group, www.AZCFUG.org
Twitter: @AlanRother


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:356168
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to