• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

我在delphi7下调用微软的WebServices的心得.(可以返回数据集)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
参考 燕八哥 MSN:[email protected]文章 :http://www2.cnblogs.com/cowbird/archive/2004/06/19/17129.html
操作步骤如下:
1、在VS.2003下编写WebServices,代码如下:
 1         [WebMethod]
 2         public string HelloWorld()
 3         {
 4             return "Hello World";
 5         }
 6 
 7         [WebMethod]
 8         public DataSet GetBook()
 9         {
10             sqlDataAdapter1.Fill(dsBook);
11             return dsBook;
12         }
{用C#开发web services的时候,如果你这样写  sqlDataAdapter1.Fill(ds,'tablename');}那么你是看不到上面橙色筐中的字段的。千万不要表明数据集中表名。你这样写就可以了,sqlDataAdapter1.Fill(ds);就能显示字段了!

2、新建一个Delphi7项目,分别加入TButton,THTTPRIO,TXMLTransformProvider,TClientDataSet,TDataSource,TDBGrid

3、在Delphi7中导入WebService
首选,选择File/New/Other/选择WebService/选择WSDL IMPORTER

4、这样在Unit1单元中引用WSDL单元,并在Button1的OnClick中写入代码如下:
 1 procedure TForm1.Button1Click(Sender: TObject);
 2 var
 3   test:Service1Soap;//这个就是WSDL下的类接口对象
 4   msg:widestring;
 5 begin
 6   //HTTPRIO1 其实就是所谓的代理类,它负责进行数据传输发送Request和接受Response的
 7   test:=HTTPRIO1 as Service1Soap;
 8 
 9   msg:=test.HelloWorld;//这就是调用web服务所暴露给我们的web服务方法WebMethod
10   showmessage(msg);
11   test.GetBook;
12 end;
13 

设置HTTPRIO1的属性
WSDLLocation为http://localhost/WebService1/Service1.asmx?WSDL
Port为Service1Soap
Service为Service1

同时在AfterExecute事件写入以下代码

 1 procedure TForm1.HTTPRIO1AfterExecute(const MethodName: String;
 2   SOAPResponse: TStream);
 3 var
 4   XMLDoc: IXMLDocument;
 5 begin
 6   SOAPResponse.Position := 0;
 7   ClientDataset1.Active := FALSE;
 8   SOAPResponse.Position := 0;
 9   XMLDoc := NewXMLDocument;
10   XMLDoc.Encoding := 'SUTF8'//应该是'SUTF8'并需要引用XMLIntf,XMLDoc两个单元
11   SOAPResponse.Position := 0;
12   XMLDoc.LoadFromStream(SOAPResponse);
13   XMLDoc.SaveToFile('c:\abc.xml'); //可用这个文件做格式
14   XMLTransformProvider1.TransformRead.SourceXmlDocument := XMLDoc.GetDOMDocument;
15   ClientDataset1.Active := TRUE;
16 end;
17 


5、运行程序,产生C:\abc.xml文件,打开Toole/XMLMapper;打开abc.xml;选中'Sys_books',按右键,选择Select All Children,再选择Create Datapacket from XML(或按Ctrl+D),再点击Create and Test Transformation(Ctrl+T)按钮,最后右建中间框,选择Save Transformation(Ctrl+S),保存为C:\ToDp.xtr

打开C:\ToDp.xtr文件
将<SelectEach dest="DATAPACKET\ROWDATA\ROW" from="\soap:Envelope\soap:Body\GetBookResponse\GetBookResult\diffgr:diffgram\NewDataSet\Sys_books">
改为<SelectEach dest="DATAPACKET\ROWDATA\ROW" from="\Envelope\Body\GetBookResponse\GetBookResult\diffgram\NewDataSet\Sys_books">
{from后面只要是单词后面有冒号的,该单词和冒号都要去掉,delphi7才能显示数据}

6、为XMLTransformProvider1属性TransformRead\TransformationFile指定文件C:\ToDp.xtr


delphi7调用代码:/Files/ZhouXiHong/D_Client.rar


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB学习第五章矩阵发布时间:2022-07-18
下一篇:
MATLAB模糊数据工具箱的使用发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap