kenlistian

勤学多思

  IT博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  412 随笔 :: 0 文章 :: 23 评论 :: 0 Trackbacks

在cbuilder中,其实调用soap倒是很简单,只是不知道能否和其他语言通用。说是可以跨语言,但是没有做过。

预备:

web services控件的说明如下:

● thttprio:通过http和soap数据包调用远程web services;
● toptosoapdomconvert:将请求参数打包成soap,并且解析soap响应数据包;
● thttpeqresp:通过wininet.dll传送http请求或接收http响应;
● thttpsoapdispatcher:拦截http请求,并把请求分派给thttpsoapcppinvoker;
● thttpsoapcppinvoker:根据请求调用正确的web services;
● twsdlhtmlpublish:自动产生描述web servicse的服务信息以及wsdl内容。

 

下面做了一个例子检测一下能否调用对数据库的操作。

1.服务端:

在project立即建立一个soap服务端程序,加入datamodual,

加入adoconnection,如图:

在接口类中写一个接口方法:如下:


/*************************************************
  操作数据库,返回对数据库的操作处理
*/
string ttest6impl::do1(string s)
{
   if (dm1 == null)
   {
      dm1 = new tdm1(null);
   }
   dm1->adoquery->close();
   dm1->adoquery->sql->clear();
   dm1->adoquery->sql->text = "select * from workno where workno ='"+ s + "'";
   dm1->adoquery->open();
   if (!dm1->adoquery->isempty())
   {
     return dm1->adoquery->fieldbyname("name")->asstring;
   }
   else
     return "no";
}
它将返回对数据库的业务逻辑处理。 

继续,看能否将数据表发布出去,直接引入webdatamodual,

同样,加入adoconnection控件,如图:

放入表格控件。

对上编译后,将dll放到iis中,通过本地ie可以看到其webdatamodual已经发布出去。如图:

点击ie中的接口itest6的【wsdl】把生成的xml文件到文件,作为客户端导入的接口头文件。 

2.客户端编写

  a。创建一个应用程序,导入websoap中的接口,如图:

将在ie中刚拷贝的xml文件生成接口文件,

在客户端编写调用。在界面添一个edit,button控件,其代码

其中加入httprio1,其是通过http和soap数据包调用远程web services;

其实接口文件中的getites6封装了httpprio调用的过程。

void __fastcall tform3::button1click(tobject *sender)
{
  //  label1->caption = getitest6()->do1(edit1->text);

    _di_itest6 service;   
  httprio1->queryinterface(service);   //查询接口
  if (!service)
    return;
  label1->caption =  service->do1(edit1->text);

}

如何返回数据集,加入tsoapconnection,以及tdataclient控件,

设置相应的链接数据集以及接口属性。

如图:

挂好后,增加一个按钮:激活clientdataset控件

void __fastcall tform3::button3click(tobject *sender)
{
   clientdataset1->active = true;
}

编译上面的文件,生成客户端exe,启动该客户端,运行检查。

由于本人机子上安装的是sql server,打开一个工号表,看输入工号

1234返回的是否姓名:运行结果返回姓名。

在第二页检查是否返回数据集,运行结果如图:

看来,把客户端程序以后可以通过80端口处理业务,

而不是直接连接到数据库上,对于配置来说是不是减少了

麻烦,而且,可以在客户端混用其他的语言,这样,一个小组

开发没有必要非cbuilder不可。

源码附:http://www.tomore.com/1/44173.html

posted on 2007-03-29 17:23 kenlistian 阅读(741) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。