对于已经提供了wsdl 的WebService服务的时候一般有sopa 1.1和 1.2的方式

或者是这样的

可以使用GET和POST 的HTTP请求调用
现在来第一种情况的编写属于我们自己的工具类把:
调用前先使用测试工具Storm_r1.1测试我们的服务调用的接口
输入URL地址:这里使用免费开源地址测试QQ是否在线

点击左侧的方法;获取XML传参拷贝下来

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><qqCheckOnline xmlns="http://WebXml.com.cn/"><qqCode /></qqCheckOnline></soap:Body>
</soap:Envelope>

然后编写我们的工具类:
先导入包:

     <!-- dom4j --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency>

编写工具类:

/*** Project Name:StudySpringApp* File Name:WebSeriveUtil.java* Package Name:com.java.util* Date:2019年6月17日下午5:20:33* Copyright (c) ©1994-2019 Scjydz.com All Rights Reserved.
*/
package com.amt.util;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;/*** @Title: ServiceUtil.java* @Package com.amt.util* @Description: TODO(远程调用Service)* @author lys* @date 2019年6月17日 下午5:20:33 Copyright (c) ©1994-2019 Scjydz.com All Rights*       Reserved.*/
public class ServiceUtil {// 远程调用url地址private static String ADDRESS = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx";/*** @description: HttpURLConnection远程执行POST方法调用外部接口* @param address     外部url地址* @param method       调用方法* @param param        传参* @return 接口调用XML字符串* @throws Exception io异常*/public String requestWSDL(String method, String param) throws Exception {// 创建服务地址URL url = new URL(this.ADDRESS);// 打开一个通向服务地址的连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 设置参数// 发送方式设置:POST必须大写connection.setRequestMethod("POST");// 设置数据格式:content-typeconnection.setRequestProperty("content-type", "text/xml;charset=utf-8");// 注意这里需要填服务暴露的地址和方法名组合connection.setRequestProperty("SOAPAction", "http://WebXml.com.cn/qqCheckOnline");// 设置输入输出,因为默认新创建的connection没有读写权限,connection.setDoInput(true);connection.setDoOutput(true);// 设置SOAP数据,发送请求String soapXML = getXML(method,param);// 将信息以流的方式发送出去OutputStream os = connection.getOutputStream();os.write(soapXML.getBytes());// 接收服务端响应
//      int responseCode = connection.getResponseCode();StringBuilder sb = new StringBuilder();
//      if (200 == responseCode) {// 服务端响应成功// 获取当前连接请求返回的数据流InputStream is = connection.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String temp = null;while (null != (temp = br.readLine())) {sb.append(temp);}is.close();isr.close();br.close();
//      }os.close();return sb.toString();}/**** @description: 组装格式xml* @param RequestCode 业务代码* @param param        传参* @param method      接口方法* @return 完整soapXML传参信息*/private static String getXML(String method,String param) {StringBuffer requestXML = new StringBuffer();requestXML.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");requestXML.append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">");requestXML.append("<soap:Body>");requestXML.append("<" + method + " xmlns=\"http://WebXml.com.cn/\">");requestXML.append("<qqCode>");if (!StringUtils.isEmpty(param)) {requestXML.append(param);}requestXML.append("</qqCode>");requestXML.append("</" + method + ">");requestXML.append("</soap:Body>");requestXML.append("</soap:Envelope>");return requestXML.toString();}public static void main(String[] args) throws Exception {String repString = ServiceUtil.requestWSDL("qqCheckOnline","273991209");// 查看调用结果System.out.println(repString);}}

结果如下:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><qqCheckOnlineResponse xmlns="http://WebXml.com.cn/"><qqCheckOnlineResult>Y</qqCheckOnlineResult></qqCheckOnlineResponse></soap:Body></soap:Envelope>

返回了一个XML字符串给我们,这个时候我们就dom4j解析XML串

 public static void main(String[] args) throws Exception {String repString = WebServiceUtil.requestWSDL("qqCheckOnline","273991209");// 查看调用结果
//      System.out.println(repString);//解析数据Document doc = DocumentHelper.parseText(repString);// 报文转成doc对象Element root = doc.getRootElement();Element rest = root.element("Body").element("qqCheckOnlineResponse").element("qqCheckOnlineResult");System.out.println(rest.getText());}}

解析后完成返回:

Y代表QQ在线。

那么第二种情况我们就得改方法了:
首先可以看见他入参的方式不一样了:

是xmlpara=string 注意这里不一样了
那么我们就把方法改一下:

/*** @description: HttpURLConnection远程执行POST方法调用外部接口* @param address     外部url地址* @param RequestCode 业务代码* @param xml         传参格式为<id>1</id><name>张三</name>* @return 接口调用XML字符串* @throws Exception io异常*/public static String requestWSDL(String method, String xml) throws Exception {OutputStreamWriter oStream = null;BufferedReader reader = null;StringBuffer sbf = new StringBuffer();URL url = new URL(ADDRESS + method);HttpURLConnection con = (HttpURLConnection) url.openConnection();con.setRequestMethod("POST");con.setRequestProperty("Accept-Encoding", "gzip,deflate");con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");con.setDoInput(true);con.setDoOutput(true);oStream = new OutputStreamWriter(con.getOutputStream(), "UTF-8");oStream.write(xml);oStream.flush();oStream.close();reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));String line;while ((line = reader.readLine()) != null) {sbf.append(line);}reader.close();oStream.close();con.disconnect();if (oStream != null) {oStream.close();}if (reader != null) {reader.close();}return sbf.toString();}

调用的时候需要这样:

String xml = "<name>张三<name>";
WebServiceUtil.requestWSDL("调用的方法", "xmlpara=" + xml);

返回结果也是XML字符串需要自己解析

WebService调用工具类对Sopa 1.1和Sopa 1.2都可以以及HTTP请求相关推荐

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

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

  2. Android中调用webservice的工具类

    最近学习WebService,感觉利用这个借口开发网站的Android客户端方便及了,用到一个工具类,这里铭记一下. public static final String WebServiceName ...

  3. Redis的API调用工具类

    1.一个Redis的工具类!方便调用Redis的API操作! package com.example.demo.utils;import org.springframework.beans.facto ...

  4. 百度云内容审核api调用工具类

    1.引入maven依赖 2. package com.ck.common.aip;import com.alibaba.fastjson.JSONObject; import com.baidubce ...

  5. WebService工具类调用远程接口服务时java.io.IOException: Server returned HTTP response code: 500 for URL XXX

    问题描述:在本地测试时,使用个人封装的Webservice代码工具类调用远程接口服务时,一切正常.但是一旦将该代码放到一个已有项目的中使用时,就会出现如下所示的错误提示 java.io.IOExcep ...

  6. Android 通过WebService进行网络编程,使用工具类轻松实现

    转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢! 相信大家 ...

  7. 使用WebService进行网络编程【工具类】

    相信大家在平常的开发中,对网络的操作用到HTTP协议比较多,通过我们使用Get或者Post的方法调用一个数据接口,然后服务器给我们返回JSON格式的数据,我们解析JSON数据然后展现给用户,相信很多人 ...

  8. Java 调用接口工具类并设置请求和传输超时时间

    废话不多说直接上代码 /*** 接口调用工具类* @Author: MonsterTiny* @Date: 2020-07-23 10:06*/ public class HttpClientUtil ...

  9. 史上最全的常用开发工具类收集Android

    API 银行卡管理 → BankCheck checkBankCard : 校验银行卡卡号是否合法 getBankCardCheckCode: 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验 ...

最新文章

  1. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言
  2. Kubernetes[3]-Server
  3. 计算机讲Word文档中的组合,电脑Word文档中两个表格如何合并
  4. 如何提高电路工作频率
  5. 网络模块封装-axio
  6. LED背光源的技术术语
  7. js拆分百分数_计算百分比Javascript
  8. 目标检测数据集:直升机(1)
  9. Excise_Oop2
  10. 【Apollo 6.0项目实战】Perception模块
  11. Mac Mounty正常卸载方法(mount failed异常解决)
  12. ios开发原生的扫描二维码的实现以及限制扫描区域rectOfInterest遇到的一些坑
  13. Unity自动提取优化Fbx模型动画文件,并生成ab包文件大小对比信息
  14. md5 java 实现_MD5加密的Java实现
  15. canvas手绘正五边形
  16. 99.9%的努力毁于0.1%的失误
  17. stm32中cubmx+keil+proteus+虚拟串口+串口助手的使用
  18. 迷失lost结局什么意思_《迷失》今晨结局:多个谜团依然未解(剧透)
  19. 区块链时代正开启 中原精英探讨区块链未来 ----2018华中首届区块链论坛郑州开幕
  20. WordPress博客连接微信小程序

热门文章

  1. ASEMI代理ADM3251EARWZ-REEL原装ADI车规级ADM3251EARWZ-REEL
  2. π型人才热潮B面,环球网校的升维之道
  3. 1095. Cars on Campus (30)
  4. 微信视频通话概括-测试用例
  5. mysql索引优化原则:覆盖索引、最左前缀原则、索引下推
  6. rstudio安装后如何打开_Rstudio安装及安装问题总结
  7. 地级市各类交通工具的客货运量和拥有量指标
  8. “电子游戏之父”去世享年92岁 发明首台游戏机
  9. C++ 学习 ::【基础篇:13】:C++ 类的基本成员函数:类类型成员的初始化与构造函数问题
  10. postgreSQL查询 获取行号 rownum,解决方案