Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 7843|回复: 5

Webservice高效简单的使用

[复制链接]

该用户从未签到

发表于 2014-5-2 18:11:38 | 显示全部楼层 |阅读模式
本帖最后由 tsp_1030 于 2014-5-2 18:17 编辑

Lazarus由于没有集成webservice,所以如果想用Webservice必须安装第三方Web Service Toolkit来使用,但是使用起来很不方便,也有版本不兼容的问题。通过自己的摸索现在总结了一套简单高效的方法,灵感是来自http协议,因为webservice是通过soap协议通讯的,而soap协议本属于http的一种封装协议,所以知道soap的协议格式就可以了,废话不说了,具体看如下:
1.首先得有网络通讯控件,我用了lnet的httpclient,lnet有个好处是可以兼容wince。(lent控件源代码里有httpclient的demo,可以参考使用)
2.请求调用wenservice的关键代码:
  EditURL.Text:='http://222.175.191.186:8888/zceam/services/Datalist';  HTTPBuffer := '';
  SSL.SSLActive := DecomposeURL(EditURL.Text, aHost, aURI, aPort);
  HTTPClient.Host := aHost;
  HTTPClient.URI  := aURI;
  HTTPClient.Port := aPort;
  HTTPClient.Method:=hmPost;

  Fstr:='<?xml version="1.0" encoding="utf-8"?>';
  Fstr:=Fstr+'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
  Fstr:=Fstr+'<soap:Body>';
  Fstr:=Fstr+'<GetRyxx xmlns="http://webservice.bjzc.com">'; //通过?wsdl查看信息targetNamespace="http://webservice.bjzc.com">
  //Fstr:=Fstr+'<userID>string</userID>'; //参数
  Fstr:=Fstr+'</GetRyxx>';
  Fstr:=Fstr+'</soap:Body>';
  Fstr:=Fstr+'</soap:Envelope>';
  Fstr:=Fstr+'';
  Fstr:=Fstr+'';
  Fstr:=Fstr+'';
  headln:=0;dataln:=length(Fstr);


  httpclient.AddExtraHeader('Keep-Alive: 300');
  httpclient.AddExtraHeader('Connection: keep-alive');
  httpclient.AddExtraHeader('Content-Length: '+inttostr(headln+dataln));
  httpclient.AddExtraHeader('Content-Type: xml;');  ///////  multipart/form-data  ////stream
  //httpclient.AddExtraHeader('SOAPAction: "http://222.175.191.186:8888/zceam/services/GetgwList"');  //通过?wsdl查看信息soapAction
  httpclient.AddExtraHeader(LineEnding+Fstr);

  HTTPClient.SendRequest;
3.接收数据参考lent里面的httpclient的例子。        

评分

参与人数 1金钱 +10 收起 理由
bugxiong + 10

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2014-5-7 17:33:42 | 显示全部楼层
嗯,不错,学习了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-8-5 10:54:18 | 显示全部楼层
很好,标记一下,将来会用得上
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-9-17 09:56:18 | 显示全部楼层
webservice的客户端
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-10-2 16:50:55 | 显示全部楼层
由于目前还没找到WINCE链接sql server的组件,我也是用lnet的。服务端用的是RTC.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-10-20 22:50:49 | 显示全部楼层
MARK
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2024-9-12 04:01 , Processed in 0.030587 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表