当前位置: 首页 > news >正文

java发送SOAP请求

一些服务,比如webService,是需要基于SOAP协议进行通信的。
‌SOAP请求是基于XML的通信协议,通过HTTP传输实现跨平台应用程序交互‌。

下面是基于java发送请求和解析返回结果为json串的方法

    /*** 发送SOAP请求* @param methodName 请求方法名* @param paraMaps 请求的参数 key为参数名称  value为参数值 没有请传入null* @return 请求结果* @throws IOException*/public static String send(String methodName,Map<String, String> paraMaps) throws IOException {StringBuilder sbd = new StringBuilder();if(null == paraMaps) {sbd.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");sbd.append("<soapenv:Envelope " + "xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'"+ " xmlns:ws='http://ws_server.server/'" + ">");sbd.append("<soapenv:Body>");sbd.append("<ws:").append(methodName).append("/>");}else {Set<Map.Entry<String,String>> sets = paraMaps.entrySet();StringBuilder paras = new StringBuilder();for(Map.Entry<String,String> entry : sets) {paras.append("<").append(entry.getKey()).append(">").append(entry.getValue()).append("</").append(entry.getKey()).append(">");}sbd.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");sbd.append("<soapenv:Envelope " + "xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'"+ " xmlns:ws='http://ws_server.server/'" + ">");sbd.append("<soapenv:Body>");sbd.append("<ws:").append(methodName).append(">");sbd.append(paras);sbd.append("</ws:").append(methodName).append(">");}sbd.append("</soapenv:Body>");sbd.append("</soapenv:Envelope>");HttpClient client = new HttpClient();PostMethod postMethod = new PostMethod(wsdl);client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);client.getHttpConnectionManager().getParams().setSoTimeout(timeout);RequestEntity requestEntity = new StringRequestEntity(sbd.toString(), "text/xml", "UTF-8");postMethod.setRequestEntity(requestEntity);try {@SuppressWarnings("unused")int status = client.executeMethod(postMethod);} catch (Exception e) {e.printStackTrace();return null;}// 获取响应体输入流InputStream is = postMethod.getResponseBodyAsStream();// 获取请求结果字符串return IOUtils.toString(is, StandardCharsets.UTF_8);}/*** 解析xml,解析成json* @param resultDataXML* @return*/public static String realXMLResult(String resultDataXML) {org.dom4j.Document doc;try {doc = DocumentHelper.parseText(resultDataXML); // 将字符串转为XMLorg.dom4j.Element rootElt = doc.getRootElement(); // 获取根节点org.dom4j.Element body = rootElt.element("Body"); // 获取根节点下子节点String elementOnBodyName = "";for(org.dom4j.Element element : body.elements()) {elementOnBodyName = element.getName();}org.dom4j.Element elementOnBody = body.element(elementOnBodyName); // 获取根节点下子节点// 多个returnIterator<Element> p = elementOnBody.elementIterator("return");// 遍历row节点while (p.hasNext()) {org.dom4j.Element curP = p.next();JSONObject jsonResult = JSON.parseObject(curP.getTextTrim());return jsonResult.toJSONString();}} catch (Exception e) {e.printStackTrace();return null;}return null;}
http://www.dtcms.com/a/525394.html

相关文章:

  • Web单页应用(SPA)路由设计(以React为例)
  • 如何把网站放到域名上广告推广平台哪个好
  • 《操作系统真象还原》 第十一章 用户进程
  • maven打jar包,将依赖的jar提取出来
  • 现在做网站用什么工具营销型网站的推广
  • V-Ray for Blender正式上线,新功能概览
  • Blender入门学习06 - 粒子
  • 在什么网站上可以找设计兼职来做电子商务网站html模板
  • 网站索引量白城网络推广
  • mysql 学习网站网站开发公司照片
  • 小迪安全v2023学习笔记(一百三十七讲)—— Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
  • golang使用泛型
  • 自己做的小说网站要交税吗免费的站内推广方式有哪些
  • Anthropic将使用100万个TPU训练大模型
  • 阿里云服务器网站建设找销售的网站
  • 【PPT导出高清tif图】利用PPT将子图组合并导出高清图片
  • 怎样做加入购物车的网站示范建设验收网站
  • 广州做网站信息らだ天堂中文在线
  • 小说网站怎么做用户画像网站建设相关技术
  • CredentialProvider交互式登录实现
  • wap建站程序六年级做的网站的软件下载
  • seo网站建设厦门网站添加地图
  • 如何访问国外网站网站开发技术路线
  • 使用 OpenAI SDK 调用通义千问(Qwen)模型:从简单对话到结构化生成
  • ESP32使用笔记(基于ESP-IDF):组件注册表介绍与使用详解
  • 自己做的网站绑定域名如何修改wordpress的登录
  • 机器视觉的物流拆码垛应用
  • react-native实现多列表左右滑动+滚动TabBar悬停
  • 自己能注册网站吗公司网站备案网站名称有什么用
  • Web后端开发总结