搞不明白的 web service(100分)

  • 主题发起人 netexplorer
  • 开始时间
N

netexplorer

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,本人在实践delphi6的web service功能的时候遇到了点麻烦,具体来说是这样的。我先构造了一个服务器,只有一个服务,接口为IWebTest,函数为gettext。在浏览器中输入:http://localhost/test/project1.dll/wsdl显示结果如下
WebService Listing
Port Type Namespace URIdo
cumentation WSDL
IWSDLPublish urn:WSDLPub-IWSDLPublish WSDL for IWSDLPublish
ISoapHello urn:Unit1-ISoapHello WSDL for ISoapHello
应该说服务器端没有问题。
客户端步骤也是照着比画:
第一步:新建一个Application。
第二步:File----->New----->Other------>WebServices----->Soap Services Importer
然后在Wsdl or Xml Schema Location中填入:http://localhost/test/project1.dll/wsdl,然后确定即生成了一个新的接口定义单元。
第三步:在主form上放上一个按钮和一个Httprio组件(在WebServices页上),并引用第二个单元(即通过Soap Services Importer自动生成的单元)
在Httprio的属性页上的WsdlLocation里面填上http://localhost/test/project1.dll/wsdl;然后在Httprio属性页上的Port和Service上选择上相应的数据即可。
第四步:书写客户调用程序,原代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
testobj:IWebTest;//定义对象
begin
testobj:=Httprio1 as IWebTest;//创建对象
showmessage(testobj.gettext);//调用方法
end;
运行时出现了问题。单击button1,出现拨号上网对话框,选择取消后什么反应都没有。没办法,拨号上网后,又出现了一个exception,具体信息如下:
project project1.exe raised exception class ESOAPDomConvertError with message 'DocumentElement http://schemas.xmlsoap.org/soap/envelope/:Envelope expected,
http://schemas.xmlsoap.org/wsdl/:definitions found'.Process stopped.Use Step or Run to continue.
真不知道是怎么回事,网上的例子说这样做就ok了,怎么到我这里就不灵了呢,盼各位大虾指教。
另,发现delphi6创建的web service不能正确的被引入到studio.net中,只能出现wsdl描述,但是产生不了一个代理类,而由C#创建的web service则没有这个问题。不是说兼容的吗?
 
我也遇到过这种问题,
你把两个location都换成
http://localhost/test/project1.dll/wsdl/IWebTest
试试。
希望能搞定!
 
哎,作web service还是用.net,
我也曾经用delphi作过测试,太麻烦了
 
http://localhost/test/project1.dll/soap
加补丁二吧,还行!
 
我认为.Net是网络发展的趋势。
我个人倾向使用Apache Soap或Apache Axis做web service,
这样可以充分发挥Java语言的跨平台性。
在客户端使用Delphi、VB、.Net,这样可以发挥客户端的易操作性。
 
to netexplorer:
我也遇到过这个问题。
原因是Httprio中只用设置URL为:http://localhost/test/project1.dll/soap
即可,其它(包括Wsdllocation)都不用设。你再试一试。
 
接受答案了.
 
顶部