我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java 调用 WebService 服务的 3 种方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java 调用 WebService 服务的 3 种方式

虽然 WebService 这个框架已经过时,但是有些公司还在使用,在调用他们的服务的时候就不得不面对各种问题,本篇文章总结了最近我调用他司 WebService 的心路历程。3 种方式可以分别尝试,哪种能通用哪个。

soapui 下载地址:百度网盘夸克网盘

1. HttpClient

依赖:

                            org.projectlombok            lombok            true                                    org.apache.httpcomponents.client5            httpclient5            5.1.3        

代码:

import lombok.extern.slf4j.Slf4j;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.HttpEntity;@Slf4jpublic class HttpClientUtil {        public static String callServiceHC(String wsUrl, String jsonStr) {        String xml = createSoapContent(jsonStr);        String returnDatabase = doPostSoap(wsUrl, xml, "");        log.info("returnDatabase===>{}", returnDatabase);        return returnDatabase;    }            public static String createSoapContent(String jsonStr) {        log.info("开始拼接请求报文");        //开始拼接请求报文        StringBuilder stringBuilder = new StringBuilder();        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("getInfo\n");        stringBuilder.append("xml\n");        stringBuilder.append("测试\n");        stringBuilder.append("AcsaoP21Lxw5KAoQu6SLs624bhGjwNL0DzxsQ9a7B/HbqNsPPcA==\n");        stringBuilder.append("\n");        stringBuilder.append("]]>\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("");        log.info("拼接后的参数"+stringBuilder.toString());        return stringBuilder.toString();    }        public static String doPostSoap(String url, String soap, String SOAPAction) {        //请求体        String retStr = "";        // 创建HttpClientBuilder        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();        // HttpClient        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();        HttpPost httpPost = new HttpPost(url);        try {            httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");            httpPost.setHeader("SOAPAction", SOAPAction);            StringEntity data = new StringEntity(soap,                    Charset.forName("UTF-8"));            httpPost.setEntity(data);            CloseableHttpResponse response = closeableHttpClient                    .execute(httpPost);            HttpEntity httpEntity = response.getEntity();            if (httpEntity != null) {                // 打印响应内容                retStr = EntityUtils.toString(httpEntity, "UTF-8");            }            // 释放资源            closeableHttpClient.close();        } catch (Exception e) {            e.printStackTrace();        }        return retStr;    }}

注意:拼接 xml 字符串的时候要根据实际的 WebService 地址拼接,可在 soapui 中导入 wsurl 获取到入参,如下:

把这些参数全部拼接进去:

2. Http post

依赖:

                            org.projectlombok            lombok            true                                    org.jodd            jodd-http            6.3.0        

代码:

import lombok.extern.slf4j.Slf4j;import jodd.http.*;public class HttpPostUtil {        public static String callServiceHP(String wsUrl, String jsonStr) {        String xml = createSoapContent(jsonStr);        String uploadFeeDetailJsonStr = postWs(wsUrl, xml);        return uploadFeeDetailJsonStr;    }    public static String createSoapContent(String jsonStr) {        log.info("开始拼接请求报文");        //开始拼接请求报文        StringBuilder stringBuilder = new StringBuilder();        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("getInfo\n");        stringBuilder.append("xml\n");        stringBuilder.append("测试\n");        stringBuilder.append("AcsaoP21Lxw5KAoQu6SLs624bhGjwNL0DzxsQ9a7B/HbqNsPPcA==\n");        stringBuilder.append("\n");        stringBuilder.append("]]>\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("\n");        stringBuilder.append("");        log.info("拼接后的参数"+stringBuilder.toString());        return stringBuilder.toString();    }            public static String postWs(String url, String jsonStr) {        HttpResponse resp = HttpRequest.post(url).connectionTimeout(60000).timeout(60000)                .contentType("application/xml", StandardCharsets.UTF_8.toString())                .header("SOAPAction","")                .bodyText(jsonStr, "application/xml", "utf-8")                .charset(StandardCharsets.UTF_8.toString()).trustAllCerts(true)                .send();        resp.charset(StandardCharsets.UTF_8.toString());        return resp.bodyText();    }}

3. cxf

因为我用 cxf 调不通,所以就在这里就直接奉上其他博主的调用案例:
https://blog.csdn.net/qq_20161461/article/details/116237450

来源地址:https://blog.csdn.net/m0_54355172/article/details/130348073

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java 调用 WebService 服务的 3 种方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java 调用 WebService 服务的 3 种方式

虽然 WebService 这个框架已经过时,但是有些公司还在使用,在调用他们的服务的时候就不得不面对各种问题,本篇文章总结了最近我调用他司 WebService 的心路历程。3 种方式可以分别尝试,哪种能通用哪个。 soapui 下载地址
2023-08-18

Java调用CXF WebService接口的两种方式实例

方式一:使用CXF提供的工具生成客户端代码。1. 在项目中添加CXF的依赖。2. 使用CXF提供的命令行工具生成客户端代码,命令如下:```wsdl2java -d -p ```其中,``为生成的代码存放的目录,``为生成的代码所在的包
2023-09-16

webservice调用的方式有哪些

有以下几种常见的方式可以调用webservice:SOAP(Simple Object Access Protocol):基于XML的协议,使用SOAP消息进行通信。SOAP请求和响应消息都是XML格式的,可以在HTTP、SMTP等协议上传
webservice调用的方式有哪些
2024-02-29

java方法调用的方式有哪几种

在Java中,方法调用的方式主要有以下几种:直接调用:直接在代码中使用方法名和参数调用方法。通过对象调用:通过对象名调用对象的方法。静态方法调用:通过类名直接调用静态方法。通过接口调用:通过接口类型的引用调用接口的方法。通过反射调用
java方法调用的方式有哪几种
2024-03-11

java调用webservice接口的方法有哪些

Java调用WebService接口的方法主要有以下几种:1. 使用JAX-WS(Java API for XML Web Services):JAX-WS是Java EE的一部分,它提供了一种简单的方式来创建和调用Web服务。可以使用ws
2023-08-15

3种Java创建线程的方式和区别

在java中如何创建线程?下面本篇文章给大家介绍3种创建线程的方式以及区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在java中如果要创建线程的话,一般有3种方法:1、继承Thread类;2、实现Runnable接口;3、使用Calla
3种Java创建线程的方式和区别
2017-09-19

Python调用shell的几种方式

1.cmd = "some unix command"retcode = subprocess.call(cmd,shell=True)2.ssh = paramiko.SSHClient()ssh.connect(server, user
2023-01-31

java服务之间调用的方式是什么

Java服务之间调用的方式有多种,包括:1. 远程过程调用(RPC):使用RPC框架进行服务间的调用,如Dubbo、gRPC等。通过定义接口和服务契约,将方法调用封装为网络请求,进行跨进程通信。2. HTTP调用:使用HTTP协议进行服务间
2023-08-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录