Problem posting xml string using Msxml2.ServerXMLHTTP in classic ASP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Quickzilverfox
    New Member
    • Aug 2010
    • 1

    Problem posting xml string using Msxml2.ServerXMLHTTP in classic ASP

    I am attempting to send a purchase request string to a webservice on a remote site I am able to successfully send the quoterequest using Msxml2.ServerXM LHTTP on one page and parse the response. When I try to send the purchaserequest on the next page to the same URL, I get an "Unable to Parse" error and the POST never leaves my server. Please help!

    Working POST (quoterequest)
    Code:
    <%@ LANGUAGE="VBSCRIPT"%>
    <!-- #include virtual="/COMMON/global.inc" -->
    <%
    '********************************************
    ' BUILD XML AND SEND TO CSA
    '********************************************
    TOTAL_PREMIUM = 0
    ERROR = 0
    ERROR_MESSAGE = ""
    
    'strXml = "<?xml version=&apos;1.0&apos;?>"
    strXml = "<?xml version='1.0'?> "
    strXml = strXml & "<quoterequest>"
    strXml = strXml & "<aff>83079568</aff>"
    strXml = strXml & "<producer>83079568</producer>"
    strXml = strXml & "<productclass>FREESTYLELUXE</productclass>"
    strXml = strXml & "<bookingreservno></bookingreservno>"
    strXml = strXml & "<numinsured>" & session("NUMBER_OF_TRAVELERS") & "</numinsured>"
    strXml = strXml & "<tripcost>" + session("TOTAL_TRIP_COST") + "</tripcost>"
    strXml = strXml & "<departdate>" & strDepartureDate & "</departdate>"
    strXml = strXml & "<returndate>" & strReturnDate & "</returndate>"
    strXml = strXml & "<initdate>" & strInitPaymentDate & "</initdate>"
    strXml = strXml & "<finalpaymentdate>" & strFinalPaymentDate & "</finalpaymentdate>"
    strXml = strXml & "<travelers>"
    
    For n = 1 to session("NUMBER_OF_TRAVELERS")
    	strXml = strXml & "<traveler>"
    	strXml = strXml & "<age>" & getAge(session("TRAV"&n&"_DOB")) & "</age>"
    	strXml = strXml & "</traveler>"
    Next
    
    strXml = strXml & "</travelers>"
    strXml = strXml & "</quoterequest>"
    
    strXml = "&xmlrequeststring=" & Server.URLEncode(strXml)
    
    set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
    objHttp.open "POST","https://www.csatravelprotection.com/jsp/getrequest.jsp", false
    objHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    objHttp.send strXml
    
    strStatus = objHTTP.status
    strStatusText = objHTTP.statusText
    strResponseText = objHTTP.responseText
    
    '********************************************
    ' Error Variables
    '********************************************
    session("strRequestString") = strXml
    session("strResponseXml") = strResponseText
    
    '********************************************
    ' TRANSLATE RESPONSE INTO XML DOC
    '********************************************
    set xmlResponseDoc = CreateObject("MSXML2.DOMDocument")
    xmlResponseDoc.setProperty "ServerHTTPRequest", True
    xmlResponseDoc.async = False
    xmlResponseDoc.LoadXML strResponseText
    
    strResponseXml = xmlResponseDoc.xml
    strResponseXml = Replace(strResponseXml, "<", "&lt;")
    strResponseXml = Replace(strResponseXml, ">", "&gt;")
    strResponseXml = Replace(strResponseXml, chr(10), "<BR>")
    
    xmlResponseDocStatus = ""
    
    '********************************************
    ' PARSE QUOTE FROM RESPONSE XML
    '********************************************
    if (strStatus = 200) then
    
    	TOTAL_PREMIUM = xmlResponseDoc.selectSingleNode("/quoteresponse/price").text
    
    	SET oErrorNode = xmlResponseDoc.selectSingleNode("//errormessage")
    	if Not oErrorNode Is Nothing then
    		ERROR_MESSAGE = oErrorNode.text
    	end if
    
    else
    
    	ERROR = 1
    	ERROR_MESSAGE = "Error Connecting to CSA"
    	response.Redirect("csa_error.asp?PRODUCT=CSA-LUXE&SITE=" & GLOBAL_SITE_ABBR & "&ERROR_TEXT=" & server.urlencode(ERROR_MESSAGE))
    
    end if
    
    '********************************************
    ' SERVER ERROR CHECKING
    '********************************************
    if err.Number <> 0 Then
    
    	ERROR = 1
    
    	if (err.Description <> "Object required" AND err.Description <> "Unspecified error") then
    		ERROR_MESSAGE = err.Description & " (" & err.Number & ")"
    	else
    		ERROR_MESSAGE = "CSA's Travel Insurance System is not responding.  Please try again later..."
    	end if
    
    	err.Clear
    
    	response.Redirect("csa_error.asp?PRODUCT=CSA-LUXE&SITE=" & GLOBAL_SITE_ABBR & "&ERROR_TEXT=" & server.urlencode(ERROR_MESSAGE))
    
    end if
    
    Set objhttp = nothing
    "Broken" POST (purchasereques t)
    Code:
    <%@ LANGUAGE="VBSCRIPT"%>
    <!-- #include virtual="/COMMON/global.inc" -->
    <%
    ********************************************
    ' BUILD XML AND SEND TO CSA
    '********************************************
    
    ERROR_TEXT = ""
    STATUS_CODE = 0
    
    strXml = "<?xml version='1.0'?> "
    strXml = strXml & "<purchaserequest>"
    strXml = strXml & "<actioncode>NEW</actioncode>"
    strXml = strXml & "<aff>83079568</aff>"
    strXml = strXml & "<producer>83079568</producer>"
    strXml = strXml & "<productclass>FREESTYLELUXE</productclass>"
    strXml = strXml & "<bookingreservno></bookingreservno>"
    strXml = strXml & "<airflightflag>0</airflightflag>"
    strXml = strXml & "<printpolconfltr>3</printpolconfltr>"
    strXml = strXml & "<emailaddress>policies@utravelpro.com</emailaddress>"
    strXml = strXml & "<agentid></agentid>"
    strXml = strXml & "<agentemail>sales@utravelpro.com</agentemail>"
    strXml = strXml & "<numinsured>1</numinsured>"
    strXml = strXml & "<tripcost>1000</tripcost>"
    strXml = strXml & "<departdate>2010-10-28</departdate>"
    strXml = strXml & "<returndate>2010-10-29</returndate>"
    strXml = strXml & "<initdate>2010-05-05</initdate>"
    strXml = strXml & "<finalpaymentdate>2010-05-07</finalpaymentdate>"
    strXml = strXml & "<travelers>"
    	strXml = strXml & "<traveler>"
    	strXml = strXml & "<travelerfirstname>Alex</travelerfirstname>"
    	strXml = strXml & "<travelerlastname>Gonser</travelerlastname>"
    	strXml = strXml & "<age>33</age>"
    	strXml = strXml & "</traveler>"
    strXml = strXml & "</travelers>"
    strXml = strXml & "<address1>5530 Melshire Dr</address1>"
    strXml = strXml & "<address2></address2>"
    strXml = strXml & "<city>Dallas</city>"
    strXml = strXml & "<state>TX</state>"
    strXml = strXml & "<zipcode>75230</zipcode>"
    strXml = strXml & "<country>United States</country>"
    strXml = strXml & "<telephonehome>9999999999</telephonehome>"
    strXml = strXml & "<destination>Australia</destination>"
    strXml = strXml & "<supplier>Diller & Fisher</supplier>"
    strXml = strXml & "<airline>American</airline>"
    strXml = strXml & "<bebficiaryfirstname>Trudi</beneficiaryfirstname>"
    strXml = strXml & "<bebficiarylastname>Gonser</beneficiarylastname>"
    strXml = strXml & "<beneficiaryrelationship>Mother</beneficiaryrelationship>"
    strXml = strXml & "<price>86</price>"
    strXml = strXml & "<paymentmethod>Vi</paymentmethod>"
    strXml = strXml & "<ccorcheckno>4111111111111111</ccorcheckno>"
    strXml = strXml & "<ccexpiration>1210</ccexpiration>"
    strXml = strXml & "<ccname>Alex Gonser</ccname>"
    strXml = strXml & "<cczipcode>75230</cczipcode>"
    strXml = strXml & "</purchaserequest>"
    
    strXml = "&xmlrequeststring=" & Server.URLEncode(strXml)
    
    '********************************************
    ' SEND XML HTTP POST
    '********************************************
    
    set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
    objHTTP.Open "POST", "https://www.csatravelprotection.com/jsp/getrequest.jsp", False
    objHTTP.ContentLength = strXml.Length
    objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    objHTTP.send strXml
    
    strStatus = objHTTP.status
    strStatusText = objHTTP.statusText
    strResponseText = objHTTP.responseText
    
    '********************************************
    ' Error Variables
    '********************************************
    session("strRequestString") = strXml
    session("strResponseXml") = strResponseText
    
    '********************************************
    ' TRANSLATE RESPONSE INTO XML DOC
    '********************************************
    Set xmlResponseDoc = CreateObject("MSXML2.DOMDocument")
    xmlResponseDoc.setProperty "ServerHTTPRequest", True
    xmlResponseDoc.async = False
    xmlResponseDoc.LoadXML strResponseText
    
    strResponseXml = xmlResponseDoc.xml
    strResponseXml = Replace(strResponseXml, "<", "&lt;")
    strResponseXml = Replace(strResponseXml, ">", "&gt;")
    strResponseXml = Replace(strResponseXml, chr(10), "<BR>")
    
    xmlResponseDocStatus = ""
    
    '********************************************
    ' PARSE QUOTE FROM RESPONSE XML
    '********************************************
    if (strStatus = 200) then
    
    	STATUS_CODE = xmlResponseDoc.selectSingleNode("//intStatusCode").text
    	POLICY_NUMBER = xmlResponseDoc.selectSingleNode("//strPolicyNumber").text
    	ORDER_NUMBER = xmlResponseDoc.selectSingleNode("//strConfirmationNumber").text
    	ERROR_MESSAGE = xmlResponseDoc.selectSingleNode("//strStatusMessage").text
    	MESSAGE = xmlResponseDoc.selectSingleNode("//strMessage").text
    	MISSING_INPUT = xmlResponseDoc.selectSingleNode("//strMissingInput").text
    	ERROR_KEY = xmlResponseDoc.selectSingleNode("//strErrorKey").text
    	ERROR_ID = xmlResponseDoc.selectSingleNode("//strErrorID").text
    	TOTAL_BILLED = xmlResponseDoc.selectSingleNode("//dblAmountBilled").text
    
    else
    
    	STATUS_CODE = "-1"
    	ERROR_MESSAGE = "Error Connecting to our Partner System"
    
    end if
    
    set objHttp = nothing
    set xmlResponseDoc = nothing
    Thanx again for any help.
Working...