本文在原创上面稍作修改

  1. Java端创建服务

  1. 输入网址,生成wsdl文件
  2. 使用wsdl2.exe生成头文件

注意:

如果说传输的内容中含有中文,则需要增加一个bat文件,把传输类型由std::string转为wchar_t*,由宽字符传输,则可以解决乱码问题.刚开始由于没有添加处理文件导致后续接收到的中文乱码,折腾了半天,希望大家少走弯路.

bat文件(用txt文本保存如下文件,再修改后缀为bat即可)中一句话:

xsd__string = | std::wstring | wchar_t*

  • 根据wsdl文件生成头文件

先将目录切换到指定目录,为后续生成C++相关文件做准备

然后输入命令

命令执行后,会生成头文件

  • 根据wsdl的网址生成头文件
  • 中文乱码添加bat
  1. 根据soapcpp2.exe生成系列文件

soapcpp2常用选项

-C 仅生成客户端代码

-S 仅生成服务器端代码

-L 不要产生soapClientLib.c和soapServerLib.c文件

-c 产生纯C代码,否则是C++代码(与头文件有关)

-I 指定import路径

-x 不要产生XML示例文件

-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)

原始目录:

执行命令(注意大小写):

生成相关文件

  1. 程序执行

创建项目

添加文件,红色的文件复制到你创建项目目录下

你的项目添加效果如下:

代码如下:

#include "stdafx.h"
#include "soapH.h"
#include "PLMWebserviceImpServiceSoapBinding.nsmap"
using namespace std;
wchar_t * char2wchar(const char* cchar);
char * wchar2char(const wchar_t* wchar );
int _tmain(int argc, _TCHAR* argv[])
{// SOAP的客户端soap m_oSoap;class ns1__sayHello sayhello;class ns1__sayHelloResponse sayhelloReponse;soap_init(&m_oSoap);string a = "asds";wchar_t *wstrName = char2wchar(a.c_str());sayhello.arg0 = wstrName;//int result = soap_call___ns1__sayHello(&m_oSoap,NULL,NULL,&sayhello,sayhelloReponse);int result = soap_call___ns1__sayHello(&m_oSoap,"http://localhost:8080/CXFTest/services/PLMService",NULL,&sayhello,sayhelloReponse);if(SOAP_OK == result){// 输出返回结果wchar_t* strResult = sayhelloReponse.return_;//wcout.imbue(locale("chs"));char *result_s = wchar2char(strResult);cout<<"wcout:"<<result_s<<endl;delete result_s;}delete wstrName;/// 关闭SOAPsoap_destroy(&m_oSoap);soap_end(&m_oSoap);soap_done(&m_oSoap);return 0;
}
wchar_t * char2wchar(const char* cchar)
{   wchar_t *m_wchar;int len = MultiByteToWideChar( CP_ACP ,0,cchar ,strlen( cchar), NULL,0);m_wchar= new wchar_t[len+1]; MultiByteToWideChar( CP_ACP ,0,cchar,strlen( cchar),m_wchar,len); m_wchar[len]= '\0' ;   return m_wchar;
}
char * wchar2char(const wchar_t* wchar )
{char * m_char;  int len= WideCharToMultiByte( CP_ACP ,0,wchar ,wcslen( wchar ), NULL,0, NULL ,NULL ); m_char= new char[len+1];WideCharToMultiByte( CP_ACP ,0,wchar ,wcslen( wchar ),m_char,len, NULL ,NULL ); m_char[len]= '\0';return m_char;
}

调用效果:

C++调用webservice服务生成客户端代码-gsoap相关推荐

  1. java使用CXF调用webservice(生成客户端代码方式)

    1:下载CXF     进入apache官网下载:http://cxf.apache.org/download.html        解压到某个路径下例如:C:\Program Files\apac ...

  2. wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码

    1.JDK环境 2.下载apache-cxf发布包:http://cxf.apache.org/download.html 目前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME, ...

  3. 服务端使用Axis2-1.6.3发布webservice服务、客户端使用Axis1.4实现调用

    一.准备工作 下载Axis2-1.6.3-war.zip 下载链接 下载Axis1.4相关jar包 下载链接 二.开发Webservice服务端代码 使用环境:myeclipse6.6+tomcat6 ...

  4. wsdl生成客户端代码

    在处理与sap的接口过程中,采用webservice的方式对接,大部分情况下,会出现需要调用sap的服务的情况,然后对方会提供一个wsdl的地址: wsdl的调用,网上有非常多的方法,但是可能并不能解 ...

  5. Axis2调用WebService服务的3种方式(rpc调用不好用)

    第一,RPC方式,不生成客户端代码,引入相应的axis2的jar包(不好用) 注意:暂时没有成功调用,没有参数传递时远程调用成功,当有参数传递时远程调用失败: package com.ming.axi ...

  6. .NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码

    前言 上一篇博客中我们可以得知通过Swagger插件可以很方便的提供给接口开发者在线调试,但是实际上Swagger附带的功能还有很多, 比如使用NSwag生成客户端调用代码,进一步解放接口开发者. N ...

  7. 网络云盘项目——HTTP接口介绍、功能介绍、服务端/客户端代码解析

    一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...

  8. axis生成客户端代码

    1.首先下载 axis1.4 的项目包(下载地址) 2.解压到某个文件夹(比如这里叫 "axis")下 3.在 axis 文件夹下,新建一个 bat 文件,内容如下: set ax ...

  9. java 生成客户端代码_swagger-codegen生成java客户端代码

    前后端分离的时候,需要建立契约,Swagger可达到该目的(略). 建立Rest接口后,通过swagger-codegen项目可以自动生成对应的客户端代码(c++.php.java.js.node等等 ...

  10. Python调用WebService服务 查询天气预报

    文章目录 问题描述 安装 初试 修复Schema 天气预报封装 参考文献 问题描述 Python调用Webservice服务,如WebXml的免费Web服务中的城市天气预报 安装 使用suds库的分支 ...

最新文章

  1. 怎么让员工服从管理_面对员工抬杠,情绪负面,管理者,你该怎么管
  2. Telephone Number
  3. ThinkPHP5.0中报错could not find driver的解决方式
  4. web服务器的基本应用
  5. aqlserver实用程序_sqlserver命令提示实用工具的介绍
  6. lucene大牛博客汇总保存
  7. python变量名必须以什么开头_python变量为什么不能以数字开头
  8. python 键盘输入int_Python编程 Python如何获取数据
  9. DB2 char()函数引起全表扫描
  10. Kubernetes v1.14.0 之 kube_scheduler 部署
  11. FPGA测试方法以Mentor工具为例
  12. 如何使用计算机文件共享,两台电脑如何共享文件?【步骤图解】
  13. 常见服务的默认端口_wuli大世界_新浪博客
  14. 三次样条插值详解(附代码实现)
  15. 互联网寒冬?软件测试行业饱和了?为何每年还会增加40万测试员?
  16. Dynamics CRM IFD部署后延长系统注销时间
  17. 用js来完成一个赛车的小游戏
  18. python中算法定义_Python入门进阶笔记--04Python中表示“组”的概念与定义
  19. PIE SDK CommandTool工具命令一览表
  20. 全面支持ROS,思岚科技发布SLAMWARE ROS SDK !

热门文章

  1. 常微分齐次方程的规范化通解
  2. Ubuntu终端Terminator的安装与配置使用
  3. 【重构学习】02 何处重构?
  4. c语言链表中next作用,C语言链表中q-next=p;表示什么意思?
  5. 计算机建立第2用户,2016年计算机二级VF备考练习题及参考答案(5)
  6. udal导mysql_mybatis之sql标签与include标签
  7. 计算机系学生的梦想,编写我们的梦想——北大计算机系学生生活掠影-北京大学网络与信息.ppt...
  8. C语言计算抛硬币问题
  9. 计算机网络的分类 ppt,《计算机网络》PPT课件.ppt
  10. 使用Power BI时常见的几个问题(持续更新)