`
ghbullor
  • 浏览: 9400 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

VC++ 调用java 编写的webService

阅读更多
VC++ 调用java 编写的webService

Java 端编写的WebService 程序略。
java 端WebService 路径 :
 http://localhost:8080/Axis2WSTest/services/Converte

java 端 SoapAction 
urn:sayHello


public void sayHello(String userName, String message)
	{
		System.err.println("Hello!" + userName + " and he said: " + message);
	}


C++ 端如果要调用webService 需要安装工具包soapsdk.exe
下载地址为
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13456

在此之前,必需先导入所需的类型库,然后程序才能够使用SOAP的类。

#import "msxml4.dll" 

#import "C:\Program Files\Common Files\MSSoap\Binaries\mssoap30.dll" \
            exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", \
                    "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib30;


说明:
mssoap30.dll :SOAP中使用的对象和接口都在mssoap30.dll文件中
msxml4.dll:因为SOAP完全依赖于XML,因此必需用Microsoft XML Parser来处理XML

建立SOAP客户端应用有以下三步骤:
  1- 指定和连接Web服务器。
  2- 准备和发送消息。
  3- 读取服务端返回的信息。



1- SoapConnector:
  在客户/服务模式下,首先要做的事就是连接服务器。SoapConnector类执行客户端与服务端之间的消息传送协议。 SoapConnector是一个抽象类,定义了协议执行的接口。事实上, SoapConnector类不定义执行某种特定的传送协议,例如:MSMQ, MQ Series, SMTP 和 TCP/IP等。 为简便起见,本文只说明使用HTTP传送协议,
SoapConnector类使用步骤如下:
[/

a) 创建SoapConnector类对象:
 
 ISoapConnectorPtr connector; 
  Connector.CreateInstance(__uuidof(HttpConnector30)); 
  

b) 指定Web服务器地址:
  指定服务器,要做二件事:选择HttpConnector的属性和相应的属性值。本文示例选用EndPointURL属性:

Connector->Property ["EndPointURL"] = "http://localhost:8080/Axis2WSTest/services/Converte"; 

以下是属性选项说明(属性名是大小写敏感的):
  AuthPassword:客户口令
  AuthUser:客户名
  EndPointURL :客户URL
  ProxyPassword: 代理(proxy)口令
  ProxyPort :代理断口
  ProxyServer :代理服务器的IP地址或主机名
  ProxyUser :代理用户名
  SoapAction:HTTP的抬头值。这个属性只使用于低级API。它将忽略SoapClient接口(高级API)中的ConnectorProperty属性 。
  SSLClientCertificateName:指定使用Secure Sockets Layer (SSL)加密协议。语法如下:
  [CURRENT_USER | LOCAL_MACHINE\[store-name\]]cert-name with the defaults being CURRENT_USER\MY (与Microsoft Internet Explorer用法相同)。
  Timeout:HttpConnector的超时限制,以毫秒为单位。
  UseProxy:定义是否使用代理(proxy)。缺省值为False。如果将这个属性为真(True),又没有设置上面的ProxyServer值,代理服务器将使用IE里的代理服务器。此时HttpConnector将不理会IE的"Bypass Proxy"(绕道)设置。
  UseSSL:定义是否使用SSL(True 或 False)。此值设置为真时,HttpConnector对象不管WSDL设置是HTTP或HTTPS都用SSL连接方式。若此值设置为非真,HttpConnector对象只在WSDL设置为HTTPS时才用SSL方式连接。



c) 与Web服务器连接:

 
 Connector->Connect();


d) 指定动作:
  
Connector->Property ["SoapAction"] = "urn:sayHello"; 



e) 启动消息句柄:
  
必需在SoapSerializer(消息准备函数)之前先启动消息处理机制 
  Connector->BeginMessage(); 
  在消息处理完毕之后,用EndMessage()函数将消息送往服务器。
  . 
  .
  [ 消息准备代码 ]
  .
  .
  Connector->EndMessage(); 


SoapSerializer:
  用于建立送往服务器的SOAP消息。在与服务器通讯之前,SoapSerializer对象必需先与SoapConnector对象连接。SoapSerializer的初始化函数将建立这个内部连接。初始化代入的参数是InputStream (数据流):



// 创建SoapSerializer对象,并用InputSTream进行初始化。
  ISoapSerializerPtr Serializer; 
  Serializer.CreateInstance(_uuidof(SoapSerializer30)); 
  Serializer->Init(_variant_t((IUnknown*)Connector->InputStream)); 


下面是SOAP请求代码:
  <SOAP: Envelope xmlns:SOAP="soap namespace">
  <SOAP:Body>
  <m:someMethodName xmlns:m="some namespace">
  <someParameter> someParameterValue </someParameter>
  <m:someMethodName>
  </SOAP:Body>
  </SOAP: Envelope>



SOAP请求被安放在标记之中。<Envelope>是SOAP文件的主标记。SOAP信息通常都安放在”信封“(Envelope)里。信封里的<Body>标记中安放信息体,其中包含具体请求。在C++里,用相应的方法来解释这些标记并定义有关的值。
  下面的代码说明如何使用这些方法:


Serializer->startEnvelope("","",""); 
  // 开始处理SOAP消息。第一个参数是命名空间,缺省为SOAP-ENV。
  // 第二个参数定义URI。第三个参数定义Serialzier->startBody("")函数的编码方式。
  // 开始处理<Body>元素,第一个参数是URI的编码类型,缺省为NONE。
  	Serializer->StartBody("");
	Serializer->StartElement("sayHello","http://wtp","","m");
   // 开始处理Body里的子元素。
  // 第一个参数是元素名。第二个参数是URI。
  // 第三个参数编码类型。第四个参数是元素的命名空间。
	Serializer->StartElement("userName","","","");
	Serializer->WriteString("laghari78");
// 写入元素值
	Serializer->EndElement();
	Serializer->StartElement("message","","","");
	Serializer->WriteString("i say something");
// 写入元素值
	Serializer->EndElement();
	Serializer->EndElement();
	Serializer->EndBody();
	Serializer->EndEnvelope();  
  
    在上面的每个startXXX函数后都要又相应的endXXX函数来结尾。消息做完之后,连接器就调用endMessage()方法将消息发送到服务器。
分享到:
评论

相关推荐

    C#调用JavaWebService

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...

    VC++2012调用天气预报WebService

    VC++2012 调用 天气预报WebService 源代码,获取指定城市的天气信息 使用了GSOAP工具集,参考http://blog.csdn.net/startexcel/article/details/8208135

    VC++调用WebService的方式

    VC++ 调用WebService 的方式 在 Microsoft Visual C++ 中调用 WebService 是一个常见的需求,本文将详细介绍如何使用 VC++ 调用 WebService,包括 BASE64 编码方法。 标题解释 本文的标题“VC++ 调用WebService ...

    VC++使用gsoap调用WebService接口

    4. **编写调用代码**:在MFC应用程序中,实例化gSOAP的客户端类,如`soap`对象,然后调用对应的函数来发起请求。这通常涉及设置请求参数,调用`soap_call_ns::function`这样的方法,其中`ns`是命名空间,`function`...

    java调用webservice.zip

    java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...

    PB调用JAVA WEBSERVICE实例

    标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...

    JAVA 调用SAP SOAP webservice.docx

    JAVA 调用 SAP SOAP webservice 详解 在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP...

    VC++中WebService服务的调用

    在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...

    天气预报 VC++ WebService

    【标题】"天气预报 VC++ WebService" 是一个基于Visual C++编程语言开发的应用程序,其核心功能是通过调用WebService来获取并显示实时的天气信息。WebService是一种基于Web的、能够提供跨平台交互能力的服务,它允许...

    vc++调用webservice

    vc++调用webservice,很实用哦,我自己的用的例子

    推荐使用.NET调用java编写的WebService方法借鉴.pdf

    本文主要介绍如何在.NET环境中调用由Java编写的WebService方法,尤其是在处理复杂的SoapHeader时。以下是一些关键知识点: 1. **SOAPUI工具**:SOAPUI是一个用于测试Web服务的强大工具,它可以自动生成调用Web服务...

    C#调用java发布的WebService终稿.pdf

    这意味着,我们将使用 C# 语言编写的客户端程序来调用 Java 语言发布的 WebService。 描述解释 本文档的描述是指 C# 调用 Java 发布的 WebService 终稿的详细步骤指导。该指导将帮助读者了解如何使用 C# 语言调用 ...

    delphi调用Java webservice实例

    标题 "Delphi调用Java WebService实例" 涉及的是在Delphi编程环境中如何与Java WebService进行交互的技术。Delphi是一款强大的Windows应用程序开发工具,而Java WebService则是一种基于标准的,跨平台的远程调用技术...

    VC++6.0实现WebService调用(查询天气)

    在本文中,我们将深入探讨如何使用VC++6.0实现对WebService的调用来查询天气信息。Visual C++ 6.0是微软推出的一款经典集成开发环境,它支持创建各种类型的Windows应用程序,包括对Web服务的访问。对于初学者或者...

    VC++(MFC)中WebService服务的调用

    在VC++(MFC)中调用WebService服务是一项常见的任务,尤其在开发企业级应用程序时。MFC(Microsoft Foundation Classes)是微软提供的一个C++库,用于构建Windows应用程序。而WebService是一种基于HTTP协议的分布式...

    JAVA调用webservice并解析xml

    2. **创建WebService客户端**:使用WSDL(Web Service Description Language)文件,你可以自动生成Java客户端代码。Eclipse和MyEclipse都有工具可以做到这一点。WSDL文件描述了Web服务的接口、操作、消息格式等。 ...

    java调用json参数的webservice

    在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...

    VC++天气预报,webservice程序

    总的来说,"VC++天气预报,webservice程序"是一个结合了C++编程、Web服务调用和用户界面设计的项目。它展示了如何利用VC++的强大功能,通过Web服务接口获取并展示实时天气信息,为用户提供便利。这个项目的实现涉及...

    C#调用Java的webservice

    本主题将深入探讨如何使用C#调用Java编写的Web服务,这通常涉及到Web Service标准如SOAP(Simple Object Access Protocol)或现代的RESTful API。我们将分为服务端和客户端两大部分进行讲解。 一、服务端(Java Web...

    .net Post方式调用.net和java的webservice

    本文将深入探讨如何使用POST方式在.NET中调用.NET和Java编写的Web服务,并以XML作为请求数据格式。以下是对这个主题的详细阐述: 1. **什么是Web服务**: Web服务是一种基于互联网的软件应用,允许不同系统间的...

Global site tag (gtag.js) - Google Analytics