Prev: Pure ASP Upload - script unable to redirect for larger files
Next: ASP access to Data on Remote devices
From: c676228 on 23 Aug 2008 09:38 Hi all, I had a program and it always works fine and suddenly it gives me the following message when a pass a xml file to our server program: error code: -1072896680 reason: XML document must have a top level element. line #: 0 I don't know if it is my xml file or it is something else? Here is my client side program: <%@ Language=vbScript%> <% Set xmlDom=CreateObject("Microsoft.XMLDOM") XMLDom.async =False xmlDom.load Server.MapPath("05272008ACTest.xml") DataToSend = xmlDom.xml dim xmlhttp set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP") xmlhttp.Open "POST","https://www.mydomain.com/ac/xt_ac_B2B.asp",false xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" xmlhttp.send DataToSend if(Err <> 0) then Response.Write("An error occured when retrieving data from an external source.<br />") Response.Write(Err.Description) Response.End end if On error goto 0 'if request is not Ok then display detailed message about the request problem if(xmlHttp.status <> 200) then Response.Write("The remote server returned an invalid statuscode: #8221;" & _ xmlHttp.status & " " & xmlHttp.statusText) & "<br>" Response.Write("response text from remote server" & _ " " & xmlHttp.responseText) Response.End end if if xmlHttp.responseXML is nothing then Response.Write("The remote server didn't return xml content.") Response.End end if Response.ContentType = "text/xml" Response.Write xmlhttp.responsexml.xml Set xmlhttp = nothing %> and 05272008ACTest.xml file is like this: - <enrollment orderID="200808251114527143" PONumber="50000" marketingCode="E" productName="adventureCenter"> <test>Y</test> <residency>US</residency> - <coverageOption> <partI totalPartIPayment="12.55">Y</partI> <partII totalPartIPayment="">N</partII> </coverageOption> <tripName>European Tour</tripName> <enrollmentFee>5.00</enrollmentFee> <totalPayment>765.00</totalPayment> <tripDates departureDate="5/14/2007" returnDate="5/17/2007" tripDays="4" /> <numofParticipant>3</numofParticipant> - <participants> <participant firstName="Cindy" mInit="b" lastName="Rose" birthdate="4/26/1955" tripCost="2500" partIPremium="187.50" partIIPremium="25.00" /> <participant firstName="Kathy" mInit="c" lastName="Barlow" birthdate="6/28/1944" tripCost="2500" partIPremium="262.50" partIIPremium="35.00" /> <participant firstName="Matthrew" mInit="d" lastName="Kaminski" birthdate="4/27/1933" tripCost="2500" partIPremium="300.00" partIIPremium="45.00" /> </participants> <mailingInfo name="Betty Sun" address="4406 Larwin ct." city="Concord" state="CA" province="" zip="12345" country="United States" /> <email>sunshine(a)yahoo.com</email> - <phone> <homePhone number="4057887933">Y</homePhone> <bizPhone>N</bizPhone> </phone> <enrollAgreement>Y</enrollAgreement> - <payment> <method>card</method> <billingAddress name="Betty Sun" street="4406 larwin ct." city="Concord" state="CA" province="" country="United States" /> <creditCard type="visa" number="4XXXXXXXXXXXXXX" expDate="7/2007" /> </payment> </enrollment> and My server program is like this: Dim xmlDoc, InstreamXMLRoot, TestFlag Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM") xmlDoc.Load Request '--this is for xml sent via body Response.ContentType = "text/xml" '--for testing program '*********************************** 'the server program complains here, but the funny thing is I save the stream on the server and the file looks the same as it is passed and it displays in the browser very well, I don't get it!!!!! '*********************************** If xmlDoc.parseError.errorCode <> 0 Then Call UpdateXMLResponse(orderID, "False", "XML", "error code: " &xmlDoc.parseError.errorCode & " reason: " &xmlDoc.parseError.reason &" line #: " &xmlDoc.parseError.line , "") End If IF isNULL(xmlDoc) Then Set InstreamXMLRoot=Nothing Call UpdateXMLResponse(orderID, "False", "XML", "The server didn't receive the XML stream", "") END IF Set InstreamXMLRoot=xmlDoc.documentElement IF isNULL(InstreamXMLRoot) Then Set InstreamXMLRoot=Nothing Call UpdateXMLResponse(orderID, "False", "XML", "The server didn't receive the XML stream", "") END IF 'Save all info before any transaction xmlDoc.Save(Server.MapPath("B2BResponse/" & hour(now) & "_" & minute(now) & "_" & RandomNumber(1000000) & "_" & month(now) & "_" & day(now) & "_" & year(now) &"_B2BResponse.xml")) -- Betty
From: Anthony Jones on 23 Aug 2008 13:17 "c676228" <betty(a)newsgroup.nospam> wrote in message news:408B95A3-DD9A-454F-B0DD-FFE80359827D(a)microsoft.com... > Hi all, > > I had a program and it always works fine and suddenly it gives me the > following message when a pass a xml file to our server program: > error code: -1072896680 reason: XML document must have a top level element. > line #: 0 > I don't know if it is my xml file or it is something else? > Hmm, I can't see anything that would cause this error. It might help if we tweak the code a bit. Inline ... > Here is my client side program: > <%@ Language=vbScript%> > <% > Set xmlDom=CreateObject("Microsoft.XMLDOM") > Use MSXML2.DOMDocument.3.0 > XMLDom.async =False > xmlDom.load Server.MapPath("05272008ACTest.xml") > DataToSend = xmlDom.xml Don't need the above line, delete it. > > dim xmlhttp > set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP") > Belts and braces use MSXML2.ServerXMLHTTP.3.0 > xmlhttp.Open "POST","https://www.mydomain.com/ac/xt_ac_B2B.asp",false > > xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" > You're not sending a HTML form post. You don't need the above line delete it > xmlhttp.send DataToSend The xmlHttp object knows how to send an XML DOM change the line to:- xmlhttp.send xmlDom Note this will add the correct content type header. > if(Err <> 0) then > Response.Write("An error occured when retrieving data from an external > source.<br />") > Response.Write(Err.Description) > Response.End > end if > On error goto 0 > 'if request is not Ok then display detailed message about the request > problem > if(xmlHttp.status <> 200) then > Response.Write("The remote server returned an invalid statuscode: #8221;" > & _ > xmlHttp.status & " " & xmlHttp.statusText) & "<br>" > Response.Write("response text from remote server" & _ > " " & xmlHttp.responseText) > Response.End > end if > > if xmlHttp.responseXML is nothing then > Response.Write("The remote server didn't return xml content.") > Response.End > end if > Response.ContentType = "text/xml" You should be getting UTF-8 from the server and that is what you want be sending add:- Response.CharSet = "UTF-8" > Response.Write xmlhttp.responsexml.xml This can really mess up the character encoding use instead:- xmlhttp.responseXML.save Response > Set xmlhttp = nothing > %> > > and 05272008ACTest.xml file is like this: It would help if you posted the actual file content rather than what is seen in IE browser. Especially important is the start of the file. Make sure the file has no whitespace at the start. Also open the file in notepad then use Save As to check what encoding it is in. > - <enrollment orderID="200808251114527143" PONumber="50000" > marketingCode="E" productName="adventureCenter"> > <test>Y</test> > <residency>US</residency> > - <coverageOption> > <partI totalPartIPayment="12.55">Y</partI> > <partII totalPartIPayment="">N</partII> > </coverageOption> > <tripName>European Tour</tripName> > <enrollmentFee>5.00</enrollmentFee> > <totalPayment>765.00</totalPayment> > <tripDates departureDate="5/14/2007" returnDate="5/17/2007" tripDays="4" /> > <numofParticipant>3</numofParticipant> > - <participants> > <participant firstName="Cindy" mInit="b" lastName="Rose" > birthdate="4/26/1955" tripCost="2500" partIPremium="187.50" > partIIPremium="25.00" /> > <participant firstName="Kathy" mInit="c" lastName="Barlow" > birthdate="6/28/1944" tripCost="2500" partIPremium="262.50" > partIIPremium="35.00" /> > <participant firstName="Matthrew" mInit="d" lastName="Kaminski" > birthdate="4/27/1933" tripCost="2500" partIPremium="300.00" > partIIPremium="45.00" /> > </participants> > <mailingInfo name="Betty Sun" address="4406 Larwin ct." city="Concord" > state="CA" province="" zip="12345" country="United States" /> > <email>sunshine(a)yahoo.com</email> > - <phone> > <homePhone number="4057887933">Y</homePhone> > <bizPhone>N</bizPhone> > </phone> > <enrollAgreement>Y</enrollAgreement> > - <payment> > <method>card</method> > <billingAddress name="Betty Sun" street="4406 larwin ct." city="Concord" > state="CA" province="" country="United States" /> > <creditCard type="visa" number="4XXXXXXXXXXXXXX" expDate="7/2007" /> > </payment> > </enrollment> > > and My server program is like this: > > Dim xmlDoc, InstreamXMLRoot, TestFlag > > Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM") Again use MSXML2.DOMDocument.3.0 > xmlDoc.Load Request '--this is for xml sent via body > > Response.ContentType = "text/xml" '--for testing program > > '*********************************** > 'the server program complains here, but the funny thing > is I save the stream on the server and the file looks the same > as it is passed and it displays in the browser very well, I don't get it!!!!! > '*********************************** > If xmlDoc.parseError.errorCode <> 0 Then > Call UpdateXMLResponse(orderID, "False", "XML", "error code: " > &xmlDoc.parseError.errorCode & " reason: " &xmlDoc.parseError.reason &" line > #: " &xmlDoc.parseError.line , "") > End If > > IF isNULL(xmlDoc) Then > Set InstreamXMLRoot=Nothing > Call UpdateXMLResponse(orderID, "False", "XML", "The server didn't receive > the XML stream", "") > > END IF > > Set InstreamXMLRoot=xmlDoc.documentElement > IF isNULL(InstreamXMLRoot) Then > Set InstreamXMLRoot=Nothing > Call UpdateXMLResponse(orderID, "False", "XML", "The server didn't receive > the XML stream", "") > > END IF > 'Save all info before any transaction > xmlDoc.Save(Server.MapPath("B2BResponse/" & hour(now) & "_" & minute(now) & > "_" & RandomNumber(1000000) & "_" & month(now) & "_" & day(now) & "_" & > year(now) &"_B2BResponse.xml")) > Can't see where you are sending the XML response. However you would probably want to build the response in an XML DOM and use:- Response.ContentType = "text/xml" ' Yes move this line to where you send the response Response.CharSet = "UTF-8" dom.Save Response Also have you tested via Http instead of https do you get the same result. Make this bunch of changes see if it fixes things (or least breaks in a different way that we can help you with ;) -- Anthony Jones - MVP ASP/ASP.NET
From: Old Pedant on 23 Aug 2008 15:24 "c676228" wrote: > and 05272008ACTest.xml file is like this: > - <enrollment orderID="200808251114527143" PONumber="50000" > marketingCode="E" productName="adventureCenter"> > <test>Y</test> > <residency>US</residency> .... There is no <? xml .... ?> line there. If you are simply viewing the XML file via MSIE, that line *should* be showing up. An example of a valid header line would be <? xml version="1.0" encoding="windows-1252" ?> (Encoding could also be "utf-8". Many sites also use "iso-8859-1" but that's almost always a mistake.)
From: Anthony Jones on 23 Aug 2008 16:03 "Old Pedant" <OldPedant(a)discussions.microsoft.com> wrote in message news:7BEA07D0-89FF-46F7-ABF1-E77934B7192D(a)microsoft.com... > > "c676228" wrote: > > > and 05272008ACTest.xml file is like this: > > - <enrollment orderID="200808251114527143" PONumber="50000" > > marketingCode="E" productName="adventureCenter"> > > <test>Y</test> > > <residency>US</residency> > ... > > There is no > <? xml .... ?> > line there. If you are simply viewing the XML file via MSIE, that line > *should* be showing up. > > An example of a valid header line would be > <? xml version="1.0" encoding="windows-1252" ?> > > (Encoding could also be "utf-8". Many sites also use "iso-8859-1" but > that's almost always a mistake.) > An XML declaration is not mandatory; MSXML will quite happily load XML without it. However it is probably bettter that it be present. -- Anthony Jones - MVP ASP/ASP.NET
From: c676228 on 24 Aug 2008 02:34 Hi Anthony and Old Pedant, Now my b2bresponse.xml and 05272008ACTest.xml file have a line: <?xml version="1.0" encoding="UTF-8" ?> and in firefox: I still get the same error: <xmlResponse> <isSuccess>False</isSuccess> <errorField>XML</errorField> − <errorMessage> error code: -1072896680 reason: XML document must have a top level element. line #: 0 </errorMessage> <policyNumber/> </xmlResponse> in IE I have to use view source to see the following message: <?xml version="1.0"?> <xmlResponse> <isSuccess>False</isSuccess> <errorField>XML</errorField> <errorMessage>error code: -1072896680 reason: XML document must have a top level element. line #: 0</errorMessage> <policyNumber/> </xmlResponse> In IE broswer, it just looks like this: False XML error code: -1072896680 reason: XML document must have a top level element. line #: 0 the same all xml files in UTF-8 code in the notepad already. I really don't know what to do. -- Betty "Anthony Jones" wrote: > "Old Pedant" <OldPedant(a)discussions.microsoft.com> wrote in message > news:7BEA07D0-89FF-46F7-ABF1-E77934B7192D(a)microsoft.com... > > > > "c676228" wrote: > > > > > and 05272008ACTest.xml file is like this: > > > - <enrollment orderID="200808251114527143" PONumber="50000" > > > marketingCode="E" productName="adventureCenter"> > > > <test>Y</test> > > > <residency>US</residency> > > ... > > > > There is no > > <? xml .... ?> > > line there. If you are simply viewing the XML file via MSIE, that line > > *should* be showing up. > > > > An example of a valid header line would be > > <? xml version="1.0" encoding="windows-1252" ?> > > > > (Encoding could also be "utf-8". Many sites also use "iso-8859-1" but > > that's almost always a mistake.) > > > > An XML declaration is not mandatory; MSXML will quite happily load XML > without it. However it is probably bettter that it be present. > > -- > Anthony Jones - MVP ASP/ASP.NET > > >
|
Next
|
Last
Pages: 1 2 3 Prev: Pure ASP Upload - script unable to redirect for larger files Next: ASP access to Data on Remote devices |