`
frenchmay
  • 浏览: 229067 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用C++开发webservice客户端(下)

阅读更多

webserice的客户机 安装 SoapClient36g.exe,选择默认安装配置

新建vc++6.0的项目,添加下面的测试代码 TestWriteService.cpp

 

#include <stdio.h>

#import "msxml3.dll"
using namespace MSXML2;

#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" \
	exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", \
"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")

using namespace MSSOAPLib;

void main()
{
	CoInitialize(NULL);
	
	ISoapSerializerPtr Serializer;
	ISoapReaderPtr Reader;
	ISoapConnectorPtr Connector;
	
	// 与Web服务连接
	Connector.CreateInstance(__uuidof(HttpConnector));
	Connector->Property["EndPointURL"] = "http://192.168.1.99:8080/WriteRecordWS/services/WriteRecordWebService";
	Connector->Connect();
	
	// 开始消息
	Connector->BeginMessage();
	
	// 创建SoapSerializer对象
	Serializer.CreateInstance(__uuidof(SoapSerializer));
	
	// 将serializer连接到connector的输入字符串
	Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
	
	// 创建SOAP消息
	Serializer->startEnvelope("","","");
	Serializer->startBody("");

	Serializer->startElement("sayHello","","","");
	
	Serializer->startElement("in0","","","");
	Serializer->writeString("frenchmay@gmail.com");
	Serializer->endElement();

	Serializer->endElement();

	Serializer->endBody();
	Serializer->endEnvelope();

	// 将该消息发送给web服务
	Connector->EndMessage();
	
	// 读取响应
	Reader.CreateInstance(__uuidof(SoapReader));
	
	// 将reader联接到connector的输出字符串
	Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
	
	// 显示结果
	printf("Answer: %s\n", (const char *)Reader->RPCResult->text);

	Serializer.Release();
	Connector.Release();
	Reader.Release();
	CoUninitialize();
	
} 

 

上面的代码主要功能

 

1:指定webservice的网络资源路径

http://192.168.1.99:8080/WriteRecordWS/services/WriteRecordWebService

2:构建一个soap协议报文

 

	Serializer->startElement("sayHello","","","");
	
	Serializer->startElement("in0","","","");
	Serializer->writeString("c:\\123.bin");
	Serializer->endElement();

3: 通过http协议发送请求和接受响应。

	// 将该消息发送给web服务
	Connector->EndMessage();
	
	// 读取响应
	Reader.CreateInstance(__uuidof(SoapReader));

 

主义的是调试过程中,可能会因为soap协议的格式和方法参数的问题导致请求失败。

建议使用抓包工具:分别抓取java 的webservice客户端和c++的webService客户端发送的soap包,进行比较。

 

打印结果

分享到:
评论

相关推荐

    C++通过gSOAP开发WebService客户端.docx

    C++通过gSOAP开发WebService客户端

    gSOAP C/C++ 开发WebService

    gSOAP用于C/C++开发WebService客户端和服务器端,使其过程非常简单。

    gsoap c++服务端程序

    使用gsoap和c++开发的webservice客户端和服务端程序,

    WebService服务端与调用客户端原码与文档

    VS2005 VC开发的一个WebService例子 两个工程 一个详细文档 代码编译通过 运行正确 VC ATL创建的一个服务端只实现Add函数 VC 基于对话框的MFC程序调用创建的WebService 文档详细说明到每一步

    knewcode 0.93a — 支持传统C++开发方式的Web网站服务器(支持WebService),跨平台,非脚本

    支持传统C++开发及运行的跨平台的Web网站服务器端环境,建立在Apache平台上,knewcode0.93a版。 测试运行:(测试环境,Windows7) 1、将本目录拷贝到D盘根目录;(如果需要拷贝到其他目录,请自行修改Apache的配置...

    gSoap服务端客户端开发

    gSOAP是一个夸平台的,用于开发Web Service服务端和客户端的工具,在Windows、Linux、MAC OS和UNIX下使用C和C++语言编码。本资源是gSoap2.8.11版,里面还含有一个简单示例。

    knewcode — 支持传统C++开发方式的Web网站服务器,跨平台,非脚本

    支持传统C++开发及运行的跨平台的Web服务器端环境,建立在Apache平台上,knewcode0.91a版。 测试运行:(测试环境,Windows7) 1、将本目录拷贝到D盘根目录;(如果需要拷贝到其他目录,请自行修改Apache的配置文件...

    C++实现56dxw短信验证码WebService接口--

    现在把我C++写的例子实现简单介绍下,与大家共享: 1、下载工具gsoap-2.8。gsoap是个好工具,包装了SOAP到C++的实现,不需要我们再辛苦。(例子中附带这个工具) gsoap-2.8.zip 因为长名字关系,请到根目录解压后...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

     ×适用于以C或C++开发的web服务中。  ×跨平台:Windows, Unix, Linux, Mac OS X, Pocket PC, Palm OS, Symbian等。  ×支持序列化程序中的本地化C/C++数据结构。  ×可以使用输入和输出缓冲区来提高效率,但是...

    gsoap客户端与服务器开发

    gsoap c++ webservice client

    knewcode 0.92a — 支持传统C++开发方式的Web网站服务器,跨平台,非脚本

    支持传统C++开发及运行的跨平台的Web网站服务器端环境,建立在Apache平台上,knewcode0.92a版。 测试运行:(测试环境,Windows7) 1、将本目录拷贝到D盘根目录;(如果需要拷贝到其他目录,请自行修改Apache的配置...

    开源C++应用服务器:CWSS 0.8.0

    CWSS(C++ Web Service Server)是用于开发、集成、部署和管理大型分布式应用、网络应用和数据库应用的C/C++应用服务器。将C/C++的高效稳定和各种通讯标准(UDP/TCP/HTTP/SOAP等)引入大型网络应用的开发、集成、部署和...

    webservice所有包

    axis全称Apache Extensible Interaction System ...Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器

    C#调用C++底层代码

    SilverLight是基于浏览器插件的,在浏览器中运行,服务器端不需要部署任何环境,客户端只需要安装Runtime浏览器插件,无须安装.net Framework 3.0。所以,SilverLight的运行环境不受操作系统和浏览器的种类限制(更...

    gsoap2.8实现webservice与java交互

    gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多,可以实现不同语言的交互

    GSOAP2.8.49

    gsoap对接Webservice接口开发工具包,可以生成C++远程客户端接口实现代码

    用户登录权限网络验证插件[易游v1.0.4]

    支持的程序语言有:C#、c++、VB、VC、易语言、按键精灵等能调用dll的相关开发语言。 使用易游网络验证插件的特点: 1、完全免费使用 使用易游网络验证服务,完全免费使用:用户登录、代理管理、卡密管理等基本功能,...

    gsoap开发包和工具集合

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子) soap客户端工具

    asp.net知识库

    Visual Web Development 2005开发ASP.NET使用小技巧 ASP.NET 2.0 异步页面原理浅析 [1] [原] 自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的...

Global site tag (gtag.js) - Google Analytics