C++调用Java webservice.doc_第1页
C++调用Java webservice.doc_第2页
C++调用Java webservice.doc_第3页
C++调用Java webservice.doc_第4页
C++调用Java webservice.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 调用调用 Java web service 帮助文档帮助文档 2008 年 4 月 C 调用调用 Java web service 帮助文档帮助文档 1 目目 录录 目目 录录 1 一 简介一 简介 3 二 使用说明二 使用说明 3 2 12 1 安装使用安装使用 SOAP TOOLK 3 2 2 使用MSSOAP TOOKIT 3 0 监视 C 调用WEB SERVICE 3 2 3 不使用MSSOAP TOOKIT 3 0 监视 C 调用WEB SERVICE 9 2 4 被调用的方法参数是数组的情形 9 C 调用调用 Java web service 帮助文档帮助文档 2 一 简介一 简介 在做 java 项目的时候 有时候我们需要提供一些方法给外部调用 调用者可以处在网络上的任何位置 只要 通过特定的设置就可以调用 java 提供的方法 在 java 中 我们可以通过把这些方法做成 web service 本文 档主要对用 Visual C 调用 java 做的 webservice 进行一系列的说明 二 使用说明二 使用说明 C 调用 web service 的实质是 发送 soap 请求并得到返回的结果 用 C 调用 java 的 webservice 发现 与调用微软的 webservice 还是不同的 用其自带的例子无法实现与 java 做的 webservice 通讯 下面和大家 分享一下实现的方法 1 首先 需要安装微软的 mssoap tookit 3 0 工具包 可以从微软的官方网站上下载 2 使用 java 建立一个 web 服务 本例子的 web service 使用开源项目 cxf 建立起来的 想了解 cxf 请登陆 http incubator apache org cxf 2 12 1 安装使用安装使用Soap Toolk 首先 C 要调用 web service 首先要下载 mssoap tookit 3 0 工具包 并安装好 mssoap tookit 必须是 3 0 否则会出现错误 默认安装好 mssoup tookit 3 0 後 就可以使用 C 来调用 webservice 了 这时候可以使用 mssoap tookit 3 0 来监控 C 的 soap 请求 现在假设网络上有 一个 web service http 192 168 0 10 8082 ServiceGateway ServiceServer 下面就这个 web service 来详细描述使用 mssoap tookit 3 0 来监控 C 调用 web service 的情形和不监控的情形 2 22 2 使用使用 mssoapmssoap tookittookit 3 03 0 监视监视 C C 调用调用 webweb serviceservice 要想使用 mssoap tookit 3 0 来监控 首先请打开 Trace Utility 打开时候请新建一个 Formatted Trace 如下图 C 调用调用 Java web service 帮助文档帮助文档 3 这时候会弹出一个如下图的窗口 Local port 可以自己定义 使用本机上的一个空闲的端口即可 本例设置为 8080 该端口的意义 以后使用该端口来发送 soap 请求 Destination localhos 中的 localhost 请设置为 web service 的 IP 本例应该设置为 192 168 0 10 Destination 80 请设置为 web service 的端 口 本例设置为 8082 设置好之后就可以通过 localport 来监控 soap 请求了 先查看 wsdl 文件 http 192 168 0 10 8082 ServiceGateway ServiceServer wsdl C 调用调用 Java web service 帮助文档帮助文档 4 C 调用调用 Java web service 帮助文档帮助文档 5 可见有两个远程方法 int numList int int String login String 用 vc 建立一个 console 的程序 其全部代码如下 testwebservice cpp Defines the entry point for the console application C 调用调用 Java web service 帮助文档帮助文档 6 include stdafx h include import msxml4 dll using namespace MSXML2 import C Program Files Common Files MSSoap Binaries mssoap30 dll exclude IStream IErrorInfo ISequentialStream LARGE INTEGER ULARGE INTEGER tagSTATSTG FILETIME using namespace MSSOAPLib30 void Add ISoapSerializerPtr Serializer ISoapReaderPtr Reader ISoapConnectorPtr Connector Connect to the service Connector CreateInstance uuidof HttpConnector30 使用 EndPointURL 属性指定 Web 服务 因为使用 soap tookit3 0 来监控 所以使用本地的 8080 端口 来发送 soap 请求 Connector Property EndPointURL http localhost 8080 ServiceGateway ServiceServer 这是不使用mssoap tookit 3 0 来监控的情形 需要直接发送请求到远端的端口 Connector Property EndPointURL http 192 168 0 10 8082 ServiceGateway ServiceServer Connector Connect 开始消息 在与服务器连接后 我们需要指定 Web 服务完成的操作 为了指定该操作 我们需要再次使用 SoapConnector 的 Property 属性 Connector Property SoapAction http localhost 8080 ServiceGateway ServiceServer 这是不使用mssoap tookit 3 0 来监控的情形 Connector Property SoapAction http 192 168 0 10 8082 ServiceGateway ServiceServer Connector BeginMessage Create the SoapSerializer object Serializer CreateInstance uuidof SoapSerializer30 Connect the serializer object to the input stream of the connector object Serializer Init variant t IUnknown Connector InputStream 创建 SOAP 消息 Serializer StartEnvelope Serializer StartBody 开始 SOAP 消息中的一个元素 第一个参数描述了名字空间 是 wsdl 文件中的 targetNamespace http gateway C 调用调用 Java web service 帮助文档帮助文档 7 如果它是空值 就会缺省地使用 SOAP ENV 第二 第三个参数 调用 login 方法 参数名由 wsdl 文件决定 Serializer StartElement login http server hw STANDARD Serializer StartElement arg0 STANDARD Serializer WriteString cellcom Serializer EndElement Serializer EndElement Serializer EndBody Serializer EndEnvelope 将该消息发送给 web 服务 Connector EndMessage 读取响应 Reader CreateInstance uuidof SoapReader30 将 reader 联接到 connector 的输出字符串 Reader Load variant t IUnknown Connector OutputStream 显示结果 printf Answer s n const char Reader RpcResult text return int main int argc char argv CoInitialize NULL Add CoUninitialize return 0 上面的代码是一个完整的 C 调用 web service 的情形 运行之后会发现 Trace Utility 里有些信 息 如下图 C 调用调用 Java web service 帮助文档帮助文档 8 第一个框里是一个 soap 请求 第二个框是 soap 请求返回的结果 2 32 3 不使用不使用 mssoapmssoap tookittookit 3 03 0 监视监视 C C 调用调用 webweb serviceservice 不使用 mssoap tookit 3 0 监控的时候 C 的代码要做如下修改 使用 EndPointURL 属性指定 Web 服务 因为使用 soap tookit3 0 来监控 所以使用本地的 8080 端口 来发送 soap 请求 Connector Property EndPointURL http localhost 8080 ServiceGateway ServiceServer 这是不使用mssoap tookit 3 0 来监控的情形 需要直接发送请求到远端的端口 Connector Property EndPointURL http 192 168 0 10 8082 ServiceGateway ServiceServer Connector Connect 开始消息 在与服务器连接后 我们需要指定 Web 服务完成的操作 为了指定该操作 我们需要再次使用 SoapConnector 的 Property 属性 Connector Property SoapAction http localhost 8080 ServiceGateway ServiceServer 这是不使用mssoap tookit 3 0 来监控的情形 Connector Property SoapAction http 192 168 0 10 8082 ServiceGateway ServiceServer 要使用 http 192 168 0 10 8082 ServiceGateway ServiceServer 来指定服务 其他的基本上没改变 2 42 4 被调用的方法参数是数组的情形被调用的方法参数是数组的情形 下面是调用 numList 的情形 通过查看 wsdl 知道 numList 有两个参数 C 调用调用 Java web service 帮助文档帮助文档 9 通过询问 web service 的开发人员知道 第一个参数是 int 第二个参数是 int 该方法是把 int 里所有在第一参数之前的数加一 Serializer StartEnvelope Serializer StartBody 开始 SOAP 消息中的一个元素 第一个参数描述了名字空间 如果它是空值 就会缺省地使用 SOAP ENV 第二 第三个参数 Serializer StartElement numList http gateway STANDARD Serializer StartElement arg0 STANDARD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论