From: Anthony Jones on


"c676228" <betty(a)newsgroup.nospam> wrote in message
news:9E4C86A7-2763-4540-AB2D-BB9A95E77C70(a)microsoft.com...
> 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.
>

Did you make the adjustments to the code I outlined? Have you tried it via
http instead of https?


--
Anthony Jones - MVP ASP/ASP.NET


From: Anthony Jones on
"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?
>

<snip>

>
> Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")


D'oh! I think I see it now try inserting the following here:-

xmlDoc.async = false

> xmlDoc.Load Request '--this is for xml sent via body
>
> Response.ContentType = "text/xml" '--for testing program

<snip>


I still think you should make the other tweaks I recommended as well. ;)


--
Anthony Jones - MVP ASP/ASP.NET


From: c676228 on
Anthony,

Yes, I followed your directions and here is the new code. The funny part is
I think i used the same way as I coded before and how come it suddenly
doesn't work any more.
Now I tried to debug the xml file step by step. so my xml file first will
look like this:

<?xml version="1.0" encoding="UTF-8" ?>
<enrollment orderID="200808251114527143" PONumber="50000" marketingCode="E"
productName="adventureCenter">
</enrollment>

Ok, no xml needs a top element error message.

so I changed the xml file to:

<?xml version="1.0" encoding="UTF-8" ?>
<enrollment orderID="200808251114527143" PONumber="50000" marketingCode="E"
productName="adventureCenter">
<test>Y</test>
</enrollment>

Only one extra line: <test>Y</test> besides the top element.
Now it complains again:
<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>


It seems it only takes a top level element xml file, as soon as I add one
more line to the xml file, it starts to complain. I don't get it.

'*************************************
Server side:
'*************************************
Dim xmlDoc, InstreamXMLRoot, TestFlag
Set xmlDoc=Server.CreateObject("MSXML2.DOMDocument.3.0") '8/23/2008
xmlDoc.async = false
xmlDoc.Load Request '--this is for xml sent via body

Response.ContentType = "text/xml" '--for testing program

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"))
'check if this is production transaction
Call UpdateXMLResponse(orderID, "False", "XML", "The server received the XML
stream", "")


'*************************************************************
' Update B2B Response ''Response.ContentType="text/xml"
'*************************************************************
Function UpdateXMLResponse(byVal order_id, byVal SuccFlag, byVal ErrField,
byVal Desc, byVal PolicyNum)
'Set RespInfo=Server.CreateObject("Microsoft.XMLDOM")
Set RespInfo=CreateObject("MSXML2.DOMDocument.3.0")
RespInfo.async=False
RespInfo.load(server.MapPath("/Utility/B2BResponse.xml"))
Set RespInfoRoot=RespInfo.documentElement
Set SuccessNode=RespInfoRoot.selectSingleNode("isSuccess")
SuccessNode.Text=SuccFlag
If SuccFlag="True" Then
Set PolicyNode=RespInfoRoot.selectSingleNode("policyNumber")
PolicyNode.Text=PolicyNum
Else
Set ErrNode=RespInfoRoot.selectSingleNode("errorField")
ErrNode.Text=ErrField
Set DescNode=RespInfoRoot.selectSingleNode("errorMessage")
DescNode.Text=Desc
End If

If order_id <>"" Then
RespInfo.save(server.MapPath("B2BResponse/" & order_id &"_B2BResponse.xml"))
Else
RespInfo.save(server.MapPath("B2BResponse/" & month(now) & "_" & day(now)
& "_" & RandomNumber(1000000) & "_" & year(now) &"_B2BResponse.xml"))
End If%>

<%
Response.ContentType = "text/xml"
Response.Write RespInfo.xml
Set RespInfo=Nothing
Response.End

End Function
'****************************
B2Bresponse.xml is like this:
'****************************
<xmlResponse>
<isSuccess />
<errorField />
<errorMessage />
<policyNumber />
</xmlResponse>

'**********************
Client side program is like this:
'**********************
<%@ Language=vbScript%>
<%
'Set xmlDom=CreateObject("Microsoft.XMLDOM")
set xmlDom=CreateObject("MSXML2.DOMDocument.3.0")

XMLDom.async =False
xmlDom.load Server.MapPath("08242008ACTest.xml")

dim xmlhttp
set xmlhttp=server.CreateObject("MSXML2.ServerXMLHTTP.3.0") '8/23/2008

xmlhttp.Open
"POST","https://www.travelinsuranceservices.com/ac/xt_ac_B2B.asp",false
xmlhttp.send xmlDom '8/23/2008
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.CharSet = "UTF-8"
'Response.Write xmlhttp.responsexml.xml
xmlhttp.responseXML.save Response
Set xmlhttp = nothing
%>
--
Betty


"Anthony Jones" wrote:

> "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?
> >
>
> <snip>
>
> >
> > Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
>
>
> D'oh! I think I see it now try inserting the following here:-
>
> xmlDoc.async = false
>
> > xmlDoc.Load Request '--this is for xml sent via body
> >
> > Response.ContentType = "text/xml" '--for testing program
>
> <snip>
>
>
> I still think you should make the other tweaks I recommended as well. ;)
>
>
> --
> Anthony Jones - MVP ASP/ASP.NET
>
>
>
From: c676228 on
Yes, I did. See another reply in details.
I used https, I cannot use http. If I used http, it will have the following
error messge:
HTTP 500.100 - Internal Server Error - ASP error
Internet Information Services

Technical Information (for support personnel)

* Error Type:
msxml3.dll (0x80070005)
Access is denied.
/08232008adventureServerHttp.asp, line 13

line 12 and 13 are:
12: xmlhttp.Open
"POST","http://www.travelinsuranceservices.com/ac/xt_ac_B2B.asp",false
13: xmlhttp.send xmlDom '8/23/2008
--
Betty


"Anthony Jones" wrote:

>
>
> "c676228" <betty(a)newsgroup.nospam> wrote in message
> news:9E4C86A7-2763-4540-AB2D-BB9A95E77C70(a)microsoft.com...
> > 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.
> >
>
> Did you make the adjustments to the code I outlined? Have you tried it via
> http instead of https?
>
>
> --
> Anthony Jones - MVP ASP/ASP.NET
>
>
>
From: Anthony Jones on
"c676228" <betty(a)newsgroup.nospam> wrote in message
news:F2E0D6F8-0B62-4252-AF14-96D22F4DAA86(a)microsoft.com...
> Anthony,
>
> Yes, I followed your directions and here is the new code. The funny part
is
> I think i used the same way as I coded before and how come it suddenly
> doesn't work any more.
> Now I tried to debug the xml file step by step. so my xml file first will
> look like this:
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <enrollment orderID="200808251114527143" PONumber="50000"
marketingCode="E"
> productName="adventureCenter">
> </enrollment>
>
> Ok, no xml needs a top element error message.
>
> so I changed the xml file to:
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <enrollment orderID="200808251114527143" PONumber="50000"
marketingCode="E"
> productName="adventureCenter">
> <test>Y</test>
> </enrollment>
>
> Only one extra line: <test>Y</test> besides the top element.
> Now it complains again:
> <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>
>
>
> It seems it only takes a top level element xml file, as soon as I add one
> more line to the xml file, it starts to complain. I don't get it.
>
> '*************************************
> Server side:
> '*************************************
> Dim xmlDoc, InstreamXMLRoot, TestFlag
> Set xmlDoc=Server.CreateObject("MSXML2.DOMDocument.3.0") '8/23/2008
> xmlDoc.async = false
> xmlDoc.Load Request '--this is for xml sent via body
>
> Response.ContentType = "text/xml" '--for testing program
>
> 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"))
> 'check if this is production transaction
> Call UpdateXMLResponse(orderID, "False", "XML", "The server received the
XML
> stream", "")
>


Hmm... perplexing. Are we seeing all the Server code here? Do you have
other code prior to the above which reads the Request object? Note the
Request stream doesn't support reseting position to the beginning, therefore
once read, it cannot be read again. If you have already consumed the
request stream elsewhere I suspect your code would respond in the way you
are seeing.


--
Anthony Jones - MVP ASP/ASP.NET