目前常用的跨应用跨平台之间的数据交互,通常采用webapi接口,双方约定请求地址、请求方式、请求参数、响应数据格式、传输数据的加解密方式等进行数据交互,目前做项目遇到一个上游数据提供方提供的接口是webservice的方式以soap协议进行数据交互,这个使用Java的库类封装了一个基于soap协议调用webservice请求返回数据的工具类,记录以作备忘。

导入依赖

 <!--httpclient--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency><!--nutz 使用了其中的 base64的工具类,可替换为其他base64的工具类--><dependency><groupId>org.nutz</groupId><artifactId>nutz</artifactId><version>1.r.67</version></dependency>

封装工具类

import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.nutz.repo.Base64;import java.nio.charset.StandardCharsets;/*** soap 协议发送webservice请求** @author aaa* @date 2022/3/24 10:05*/
public class WebServicePostSoapUtils {/*** 使用SOAP1.1发送消息** @param postUrl webservice的URL* @param username Authorization 验证的用户名(根据webservice接口的验证规则决定是否添加)* @param password Authorization 验证的密码(根据webservice接口的验证规则决定是否添加)* @param soapXml 请求参数* @param soapAction 默认为空字符串* @return*/public static String doPostSoap(String postUrl, String username, String password, String soapXml, String soapAction) {String retStr = "";// 创建HttpClientBuilderHttpClientBuilder httpClientBuilder = HttpClientBuilder.create();// HttpClientCloseableHttpClient closeableHttpClient = httpClientBuilder.build();HttpPost httpPost = new HttpPost(postUrl);// 设置请求和传输超时时间RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(6000).setConnectTimeout(6000).build();httpPost.setConfig(requestConfig);try {httpPost.setHeader("Authorization", "Basic " + Base64.encodeToString((username + ":" + password).getBytes(), false));httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");httpPost.setHeader("SOAPAction", soapAction);StringEntity data = new StringEntity(soapXml, StandardCharsets.UTF_8);httpPost.setEntity(data);CloseableHttpResponse response = closeableHttpClient.execute(httpPost);HttpEntity httpEntity = response.getEntity();if (httpEntity != null) {// 打印响应内容retStr = EntityUtils.toString(httpEntity, "UTF-8");
//                System.out.println("response:" + retStr);}// 释放资源closeableHttpClient.close();} catch (Exception e) {e.printStackTrace();}return retStr;}
}

【Java】soap协议发送webservice请求工具类相关推荐

  1. Java 发送 Http请求工具类

    HttpClient.java package util;import java.io.BufferedReader; import java.io.IOException; import java. ...

  2. HTTP请求工具类(POST)

    HTTP请求工具类    POST请求 package com.cuierdan.utils;import org.apache.logging.log4j.LogManager; import or ...

  3. Http请求工具类:Get/Post

    第一种 import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.htt ...

  4. 2021.12.9 java代码对接sap接口(soap协议、webservice)

    2021.12.9 java对接sap接口(soap协议.webservice) 问题:对接sap接口,代码调试 执行: 1.soapui 软件测试是否能正确访问 未能正确访问,因为未在本地配置域名映 ...

  5. 【Java】HTTP请求工具类

    前言 在工作中可能存在要去调用其他项目的接口,这篇文章我们实现在Java代码中实现调用其他项目的接口. 本章内容: 创建一个携带参数的POST请求,去请求其他项目的接口并返回数据. 附加HTTP请求工 ...

  6. Java 常用HTTP请求工具类HttpUtils

    .pom依赖 <!-- httpclient --><dependency><groupId>org.apache.httpcomponents</group ...

  7. Java Https请求工具类

    个人技术网站 欢迎关注 由于微信API接口建议使用Https请求方式 而且过不久就废弃http请求方式了 所以提供以下Https工具类 public class SSLClient extends D ...

  8. Android开发之访问WebService的工具类

    Android中使用WebService通讯,下面对访问WebService的工具类进行记录 package com.wjy.project.railway.tools;import android. ...

  9. HttpURLConnection 发送http请求帮助类

    java 利用HttpURLConnection 发送http请求 提供GET / POST /上传文件/下载文件 功能 import java.io.*; import java.net.*; im ...

  10. java开发中spring常用的工具类

    内置的resouce类型 UrlResource ClassPathResource FileSystemResource ServletContextResource InputStreamReso ...

最新文章

  1. Git 版本还原命令
  2. linux 内存 实例,内存管理与使用实例
  3. Linux 中的零拷贝技术,第 2 部分
  4. 项目中常用的sql整理和详细01
  5. VC使用flash简易教程
  6. 《Linux》阿里云部署django全攻略
  7. Ubuntu 16.04下使用Wine安装Xshell 4和Xftp 4
  8. [Leetcode][第1002题][JAVA][查找常用字符][计数][HashMap]
  9. 爱站CMS综合管理系统源码php版
  10. 步骤一:入门linux基础/01Linux简介和安装/001Linux基础
  11. 半监督学习入门基础(二):最基础的3个概念
  12. 让代码在SharePoint页面执行如何在aspx页面中写代码
  13. python画图显示中文_Python绘图实现显示中文
  14. 前端安全问题及解决方案
  15. [Android] 安卓迅雷带云盘内测版7.0 简洁 无广告 官方版
  16. RAID磁盘阵列简介
  17. 计算机综合应用教材,系统测评计算机综合应用技能期末作业教材.doc
  18. 基于 SpringBoot + MyBatis-Plus 的公众号管理系统
  19. 哪些情况会造成小程序违规或下架
  20. 关于中小学编程教育的一些看法

热门文章

  1. 微信小程序报 47001 - data format error hint
  2. swagger 常用注解
  3. Linux Shell脚本文本三剑客之AWK
  4. js实现签名功能(vue中使用电子签名)
  5. 个性化域名邮箱的配置云阿里云域名解析详细教程
  6. 多媒体计算机辅助英语教学,多媒体计算机辅助小学英语教学探讨
  7. 231个web前端的javascript特效分享
  8. FCM算法研究(一)
  9. STC15单片机实战项目 - 原理图设计
  10. 尚学堂马士兵servlet/JSP笔记(四、JSP)