`
ghbullor
  • 浏览: 9308 次
  • 性别: 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服务提供了一种标准的方式来实现这一点。让...

    VC++中WebService服务的调用

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

    JAVA 调用SAP SOAP webservice.docx

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

    天气预报 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服务的访问。对于初学者或者...

    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服务接口获取并展示实时天气信息,为用户提供便利。这个项目的实现涉及...

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

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

    C#调用Java的webservice

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

    .net调用java WebService

    ### .NET调用Java WebService的关键知识点 #### 一、背景与原理介绍 在实际的软件开发过程中,不同技术栈之间的交互变得越来越普遍。对于.NET应用程序来说,有时需要调用由Java开发的WebService。这种跨平台的服务...

Global site tag (gtag.js) - Google Analytics