PDA

View Full Version : ASP: XML Transmission to USPS


RobinR
10-10-2004, 04:06 PM
I am trying to send an XML transmission to the US Postal Service to retrieve shipping rates but so far have been unsuccessful. My latest HTTP Status code is 501 and the HTTP Status text is "Not Implemented". I have no problem sending successful transmissions to both Fedex or UPS but USPS does things differently.

According to the USPS documentation, the XML is sent to "http://testing.shippingapis.com/ShippingAPItest.dll?" & "API=Rate&XML=" & XMLString

The XML and ASP code being used are below. Can anyone help with this? Unfortunately, the USPS technical staff doesn't appear to be too technical. Maybe they'll find someone who actually understands code but then again maybe not.

Thanks,

Robin
**********************************
XML:

<RateRequest USERID="************" PASSWORD="************">
<Package ID="0">
<Service>Express</Service>
<ZipOrigination>27261</ZipOrigination>
<ZipDestination>92110</ZipDestination>
<Pounds>3</Pounds>
<Ounces>8</Ounces>
<Container>None</Container>
<Size>Regular</Size>
<Machinable/>
</Package>
</RateRequest>
***************************************
Code:

<%Function SendXMLFiletoUSPS()%>
<%
Dim RateType
Dim USPSURL
Dim objSrvHTTP

RateType = "API=Rate&XML="
USPSURL = "http://testing.shippingapis.com/ShippingAPItest.dll" & "?" & RateType & strMessage & ""

Set objSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
objSrvHTTP.open "POST", USPSURL, false
objSrvHTTP.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
objSrvHTTP.send ""
strResponseMessage = objSrvHTTP.responseText
intHTTPStatusCode = objSrvHTTP.status
strHTTPStatusText = objSrvHTTP.statusText
%>
<%End Function%>

afterburn
10-11-2004, 11:56 AM
Use Server.UrlEncode() on your XML content. Then try to post it. Also do not append the XML content to the URL rather append it to the Send method.

RobinR
10-12-2004, 09:39 PM
Afterburn,

Thanks for responding. A post on www.webmasterworld.com put me in the right direction.

Here is the corrected code.

Robin
*****************

<%Function SendXMLFiletoUSPS()%>
<%

Dim RateType
Dim USPSURL
Dim objSrvHTTP

RateType = "API=Rate&XML="

USPSURL = "http://testing.shippingapis.com/ShippingAPITest.dll?"
strXML = RateType & strMessage

Set objSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
objSrvHTTP.open "POST", USPSURL, false
objSrvHTTP.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
objSrvHTTP.send (strXML)
strResponseMessage = objSrvHTTP.responseText
intHTTPStatusCode = objSrvHTTP.status
strHTTPStatusText = objSrvHTTP.statusText
%>
<%End Function%>

afterburn
10-13-2004, 11:12 AM
STop opening asp tags. This causes the ASP engine to step in an out of scripting context to output plain html. It should not occur unless its like a header or something..