【Java】soap协议发送webservice请求工具类
目前常用的跨应用跨平台之间的数据交互,通常采用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请求工具类相关推荐
- Java 发送 Http请求工具类
HttpClient.java package util;import java.io.BufferedReader; import java.io.IOException; import java. ...
- HTTP请求工具类(POST)
HTTP请求工具类 POST请求 package com.cuierdan.utils;import org.apache.logging.log4j.LogManager; import or ...
- Http请求工具类:Get/Post
第一种 import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.htt ...
- 2021.12.9 java代码对接sap接口(soap协议、webservice)
2021.12.9 java对接sap接口(soap协议.webservice) 问题:对接sap接口,代码调试 执行: 1.soapui 软件测试是否能正确访问 未能正确访问,因为未在本地配置域名映 ...
- 【Java】HTTP请求工具类
前言 在工作中可能存在要去调用其他项目的接口,这篇文章我们实现在Java代码中实现调用其他项目的接口. 本章内容: 创建一个携带参数的POST请求,去请求其他项目的接口并返回数据. 附加HTTP请求工 ...
- Java 常用HTTP请求工具类HttpUtils
.pom依赖 <!-- httpclient --><dependency><groupId>org.apache.httpcomponents</group ...
- Java Https请求工具类
个人技术网站 欢迎关注 由于微信API接口建议使用Https请求方式 而且过不久就废弃http请求方式了 所以提供以下Https工具类 public class SSLClient extends D ...
- Android开发之访问WebService的工具类
Android中使用WebService通讯,下面对访问WebService的工具类进行记录 package com.wjy.project.railway.tools;import android. ...
- HttpURLConnection 发送http请求帮助类
java 利用HttpURLConnection 发送http请求 提供GET / POST /上传文件/下载文件 功能 import java.io.*; import java.net.*; im ...
- java开发中spring常用的工具类
内置的resouce类型 UrlResource ClassPathResource FileSystemResource ServletContextResource InputStreamReso ...
最新文章
- Git 版本还原命令
- linux 内存 实例,内存管理与使用实例
- Linux 中的零拷贝技术,第 2 部分
- 项目中常用的sql整理和详细01
- VC使用flash简易教程
- 《Linux》阿里云部署django全攻略
- Ubuntu 16.04下使用Wine安装Xshell 4和Xftp 4
- [Leetcode][第1002题][JAVA][查找常用字符][计数][HashMap]
- 爱站CMS综合管理系统源码php版
- 步骤一:入门linux基础/01Linux简介和安装/001Linux基础
- 半监督学习入门基础(二):最基础的3个概念
- 让代码在SharePoint页面执行如何在aspx页面中写代码
- python画图显示中文_Python绘图实现显示中文
- 前端安全问题及解决方案
- [Android] 安卓迅雷带云盘内测版7.0 简洁 无广告 官方版
- RAID磁盘阵列简介
- 计算机综合应用教材,系统测评计算机综合应用技能期末作业教材.doc
- 基于 SpringBoot + MyBatis-Plus 的公众号管理系统
- 哪些情况会造成小程序违规或下架
- 关于中小学编程教育的一些看法