Delphi7开发SOAP调用COM+的程序,使用ISAPI的方式调用时出现“XML文档必须有一个顶层元素 Line:0”的错误提示,但是在某些机器上又可以正常

  • 主题发起人 主题发起人 lyco
  • 开始时间 开始时间
L

lyco

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi7开发SOAP调用COM+的程序,使用ISAPI的方式调用时出现“XML文档必须有一个顶层元素 Line:0”的错误提示,但是在某些机器上又可以正常执行……(100分)<br />Delphi7开发SOAP调用COM+的程序,使用ISAPI的方式调用时出现“XML文档必须有一个顶层元素 Line:0”的错误提示,但是在某些机器上又可以正常执行……
先在组件服务中关闭相关的Com+服务,然后再执行应用程序并通过一个HTTPRIO
控件去调用服务器端的数据。
第1次会执行出现这个提示:
Received Content of invalid Content-Type setting:text/html - SOAP Expects "text/xml"
第2次就会正常返回XML数据,没有问题
但是以后执行就会错误提示如下:
XML文档必须有一个顶层元素 Line:0
除非关闭Com+服务并关闭应用程序再打开,就可以重复上面的情况,否则就一直是
“XML文档必须有一个顶层元素 Line:0”的错误
但是在有的机器又很正常,开发工具用的是Delphi7,
据说Delphi6有类似的Bug,但是我用的是Delphi7
 
唉,没有人知道吗?
 
正是没办法,难道非得我重装系统不成?
 
问题一直没有解决……等待……
 
可能是你的代码写得有问题,仔细检查一下代码,重点检查com+、数据库操作。
我也写过几个WebService,有时候会出现与你提示一样的错误信息,注意以下问题:
1.是否安装有DotNet Framework,是的话就只能用Delphi7编译WebService,否则使用时会出错。
2.不要直接返回IAppServer接口或通过它来从远程取数据,反正我用它时,测试结果显示很不稳定。我的做法是用Com+中的Ado查询出记录集,然后Save出Xml字符流,然后压缩并编码成base64字符串,然后返回给调用的客户端,客户端收到后先Base64解成xml字符流,然后用AdoQuery Load进来。
3.如果还是有问题,那我还是劝你使用CGI吧,它比ISAPI的dll稳定多了,我一直是使用CGI。
希望对你有帮助。如果还是解决不了,就只能然人看看你的Code,我倒是可以帮您看看,但是最近比较忙,不一定很快回复你。
 
这几天没有管这个问题,今天想起来用TCPTrace检查SOAP数据,结果发现
出错的情况变成这个样子:
单数调用正常;但是双数调用就出现该错误:
“Received Content of invalid Content-Type setting:text/html - SOAP Expects "text/xml"”
用TCPTrace检查发现每一次调用都会在正常的数据后面,都会跟有一堆有如下的错误字符串:
HTTP/1.1 500 Server Error
Server: Microsoft-IIS/5.0
Date: Fri, 16 Apr 2004 04:31:34 GMT
Content-Type: text/html
Content-Length: 44
<html>-2147417842 (0x8001010e)</body></html>
在第二次调用的时候,实际上客户端没有发新的请求,而是直接取出这个错误提示,因此就出错了。
究竟是为什么呢?
to jajfox:谢谢你的建议,不过,你所说的1、2的情况我这里都没有效果。代码也是很简单的,因为只是一个练习程序而已。
当然了,我可以用别的方式把问题避开,但是还是希望知道为什么。希望现在这个新的错误提示能让你帮我找出错误所在,谢谢!:)
 
XML文档必须有一个顶层元素 Line:0
说明返回了空的xml阿
 
你可能取的是Clientdataset.Data而不是Clientdataset.xmldata,或需要格式转换,参见李维的书。
 
看来我得说具体一点:
在用TCPTrace跟踪的时候,我的每次调用,都会返回2段连续的http代码,第一段字符串是完全正常的(包括HTTP头和XML数据都是正确的),紧跟着的第2段字符串就是html的错误提示:
HTTP/1.1 500 Server Error
Server: Microsoft-IIS/5.0
Date: Fri, 16 Apr 2004 04:31:34 GMT
Content-Type: text/html
Content-Length: 44
<html>-2147417842 (0x8001010e)</body></html>
to 沉香屑:的确是没有返回XML,但是为什么会出现这样的错误呢?
to hyhy:我取得就是Clientdataset.xmldata,但是不知道为什么返回的字符串会多出一截没有必要的错误提示
 
后退
顶部