首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

小弟我在delphi7上调用微软的Web Services的心得.(可以返回数据集)

2012-10-25 
我在delphi7下调用微软的Web Services的心得.(可以返回数据集)操作步骤如下:1、在VS.2003下编写WebServices

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

操作步骤如下:

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小弟我在delphi7上调用微软的Web Services的心得.(可以返回数据集)

3、在Delphi7中导入WebService
首选,选择File/New/Other/选择WebService/选择WSDL IMPORTER
小弟我在delphi7上调用微软的Web Services的心得.(可以返回数据集)
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
小弟我在delphi7上调用微软的Web Services的心得.(可以返回数据集)
同时在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
小弟我在delphi7上调用微软的Web Services的心得.(可以返回数据集)
打开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上调用微软的Web Services的心得.(可以返回数据集)

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

热点排行