1、调用第三方提供的webservice接口

1、获取报文信息

SoapUI-x64-5.2.1获取链接:https://pan.baidu.com/s/1iDKyUQXC4qjsKjHzdq3QcQ
提取码:s91m

2、调用

1、调用HTTP接口

 public static String invokeService(String serviceURL,String soapXML) {String str = "";try {//第一步:创建服务地址URL url = new URL(serviceURL);//第二步:打开一个通向服务地址的连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();//第三步:设置参数          //3.1发送方式设置:POST必须大写connection.setRequestMethod("POST");//3.2设置数据格式:content-typeconnection.setRequestProperty("content-type", "text/xml;charset=utf-8");connection.setRequestProperty("SOAPAction","text/xml;charset=utf-8");//3.3设置输入输出,因为默认新创建的connection没有读写权限,connection.setDoInput(true);connection.setDoOutput(true);//第四步:组织SOAP数据,发送请求//将信息以流的方式发送出去OutputStream os = connection.getOutputStream();os.write(soapXML.getBytes("utf-8"));os.close();int responseCode = connection.getResponseCode();if (responseCode < HttpURLConnection.HTTP_BAD_REQUEST) {InputStream is = connection.getInputStream();InputStreamReader isr = new InputStreamReader(is, "utf-8");BufferedReader br = new BufferedReader(isr);StringBuilder sb = new StringBuilder();String temp = null;while (null != (temp = br.readLine())) {sb.append(temp);}br.close();str = sb.toString();}else {InputStream is = connection.getErrorStream();InputStreamReader isr = new InputStreamReader(is,"utf-8");BufferedReader br = new BufferedReader(isr);StringBuilder sb = new StringBuilder();String temp = null;while(null != (temp = br.readLine())){sb.append(temp);}br.close();str = sb.toString();}} catch (IOException e) {logger.warn(e.getMessage());}return str;}

2、调用HTTPS接口

如果服务端设置了证书校验,调用https接口就会出现证书问题,请求端可以设置跳过证书校验。

 public static String invokeHttpsService(String serviceURL,String soapXML) {String str = "";try {SSLContext sslcontext = SSLContext.getInstance("SSL", "SunJSSE");TrustManager[] tm = {new MyX509TrustManager()};try {sslcontext.init(null, tm, new SecureRandom());} catch (KeyManagementException e) {e.printStackTrace();}HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {public boolean verify(String s, SSLSession sslsession) {System.out.println("WARNING: Hostname is not matched for cert.");return true;}};HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());} catch (NoSuchAlgorithmException e) {logger.warn(e.getMessage());} catch (NoSuchProviderException e) {logger.warn(e.getMessage());}try {//第一步:创建服务地址URL url = new URL(serviceURL);//第二步:打开一个通向服务地址的连接HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();//第三步:设置参数          //3.1发送方式设置:POST必须大写connection.setRequestMethod("POST");//3.2设置数据格式:content-typeconnection.setRequestProperty("content-type", "text/xml;charset=utf-8");connection.setRequestProperty("SOAPAction","text/xml;charset=utf-8");//3.3设置输入输出,因为默认新创建的connection没有读写权限,connection.setDoInput(true);connection.setDoOutput(true);//第四步:组织SOAP数据,发送请求//将信息以流的方式发送出去OutputStream os = connection.getOutputStream();os.write(soapXML.getBytes("utf-8"));os.close();int responseCode = connection.getResponseCode();if (responseCode < HttpURLConnection.HTTP_BAD_REQUEST) {InputStream is = connection.getInputStream();InputStreamReader isr = new InputStreamReader(is, "utf-8");BufferedReader br = new BufferedReader(isr);StringBuilder sb = new StringBuilder();String temp = null;while (null != (temp = br.readLine())) {sb.append(temp);}br.close();str = sb.toString();}else {InputStream is = connection.getErrorStream();InputStreamReader isr = new InputStreamReader(is,"utf-8");BufferedReader br = new BufferedReader(isr);StringBuilder sb = new StringBuilder();String temp = null;while(null != (temp = br.readLine())){sb.append(temp);}br.close();str = sb.toString();}} catch (IOException e) {logger.warn(e.getMessage());}return str;}

附上 X509TrustManager 类代码

public class MyX509TrustManager implements X509TrustManager{@Overridepublic void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}
}

2、开发webservice接口

1、逻辑实现类

package com.example.webservice;import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import java.util.ArrayList;
import java.util.List;@WebService
public class StudentServiceImpl{@WebResult(name = "responseCode")public ResponseCode getScores(@WebParam(name = "name")String name) {Student student = new Student();student.setName(name);student.setCode("123");List<Score> list = new ArrayList<>();Score score = new Score();score.setName("语文");score.setScore("150");Score score1 = new Score();score1.setName("数学");score1.setScore("140");list.add(score);list.add(score1);ResponseCode responseCode = new ResponseCode();responseCode.setCode("200");responseCode.setMsg("操作成功");responseCode.setMsg(list.toString());return responseCode;}@WebResult(name = "responseCode")//WebParam不指定name,则wsdl的参数为arg0、arg1、arg2....public ResponseCode addStudents(@WebParam(name = "students") List<Student> students) {for (Student student : students) {System.out.println("code:" + student.getCode());System.out.println("name:" + student.getName());System.out.println("scores:" + student.getScores());}ResponseCode responseCode = new ResponseCode();responseCode.setCode("200");responseCode.setMsg("操作成功");return responseCode;}
}

学生类

package com.example.webservice;import java.util.List;public class Student {private String name;private String code;private List<Score> scores;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public List<Score> getScores() {return scores;}public void setScores(List<Score> scores) {this.scores = scores;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", code='" + code + '\'' +", scores=" + scores +'}';}
}

分数

package com.example.webservice;public class Score {private String score;private String name;public String getScore() {return score;}public void setScore(String score) {this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Score{" +"score='" + score + '\'' +", name='" + name + '\'' +'}';}
}

返回类

package com.example.webservice;public class ResponseCode {private String code;private String msg;private String data;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public String getData() {return data;}public void setData(String data) {this.data = data;}
}

2、根据名称获取学生的分数

请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.example.com/"><soapenv:Header/><soapenv:Body><web:getScores><!--Optional:--><name>张三</name></web:getScores></soapenv:Body>
</soapenv:Envelope>

返回

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:getScoresResponse xmlns:ns2="http://webservice.example.com/"><responseCode><code>200</code><msg>[Score{score='150', name='语文'}, Score{score='140', name='数学'}]</msg></responseCode></ns2:getScoresResponse></S:Body>
</S:Envelope>

3、增加学生的分数

请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.example.com/"><soapenv:Header/><soapenv:Body><web:addStudents><!--Zero or more repetitions:--><students><!--Optional:--><code>1</code><!--Optional:--><name>张三</name><!--Zero or more repetitions:--><scores><!--Optional:--><name>语文</name><!--Optional:--><score>150</score></scores><scores><!--Optional:--><name>数学</name><!--Optional:--><score>149</score></scores></students><students><!--Optional:--><code>2</code><!--Optional:--><name>李四</name><!--Zero or more repetitions:--><scores><!--Optional:--><name>语文</name><!--Optional:--><score>130</score></scores><scores><!--Optional:--><name>数学</name><!--Optional:--><score>150</score></scores></students></web:addStudents></soapenv:Body>
</soapenv:Envelope>

后台处理

返回

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:addStudentsResponse xmlns:ns2="http://webservice.example.com/"><responseCode><code>200</code><msg>操作成功</msg></responseCode></ns2:addStudentsResponse></S:Body>
</S:Envelope>

webservice开发调用相关推荐

  1. WebService C#开发/调用

    简单描述C#开发WebService操作步骤以及调用方式 WebService开发 第一步:创建Web空项目 第二步:为创建的Web空项目添加Web服务 第三步:实现WebService方法(仅供参考 ...

  2. Webservice开发流程

    2019独角兽企业重金招聘Python工程师标准>>> Webservice简单的介绍 Webservice开发使用的通信协议是SOAP,支持简单对象的访问 Webservice的发 ...

  3. C++、C#写的WebService相互调用

    首先感谢永和兄提供C++的WebService服务器端及客户端,并且陪我一起熬夜:然后是火石和我做接口的兄弟,虽然都不知道你叫什么,如果没有你的合作,东西也没那么快完成. 一.由于公司运营火石的< ...

  4. WebService开发常用功能详解

    一.WebService中常用的属性(Attributes)1. Web Service(Web服务)提供以下三个属性.     Namespace:此属性的值包含 XML Web Service的默 ...

  5. axis2 webService开发 附深入理解 Java 垃圾回收机制

    相关文章: axis web服务(axis2安装和eclipse.tomcat结合开发) axis2 webService开发 axis2 webService开发(打包aar文件) 使用Axis2开 ...

  6. WebService开发与代码的编写

    WebService开发与代码的编写 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的 ...

  7. java WebService接口调用WSDL详细解析

    0.前言 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService ...

  8. 基于soap协议的webservice开发

    1.利用cxf进行webservice开发,因此需要去官网下载cxf的jar包. 2.eclispe建立工程,引入jar包. 3.编写对外发布的接口: 4.编写实现类: 5.编写对外发布的类: 6.启 ...

  9. WebService开发教程

    一.webservice 开发 1.webservice介绍 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它 ...

最新文章

  1. Why gdb crash if create too many threads ?
  2. 新建一个doophp项目
  3. 解决idea中连接MySQL数据库后写SQL语句没有提示
  4. 数据库SQL优化大总结之 百万级数据库优化方案(转)
  5. centos7 git安装
  6. sonar:默认的扫描规则
  7. mysql 二进制 存储格式化_解析MYSQL BINLOG 二进制格式(2)--FORMAT_DESCRIPTION_EVENT
  8. vue项目使用大华摄像头怎样初始化_Vue接入监控视频技术总结
  9. html自动滚屏效果,jQuery实现公告新闻自动滚屏效果实例代码
  10. git冲突解决办法合集
  11. Android数据库操作-1
  12. 日常一些需要搜索,需要花功夫但又简单的东西 此文会持续更新
  13. SURF源码分析之fasthessian.h和fasthessian.cpp
  14. 利用Python下载网络小说并保存到本地文件
  15. Android之仿ele地图定位效果
  16. 【MediaSoup】UDPSOCKET recv数据到rtcp包解析
  17. 最全电缆直径和电缆流过电流计算以及对照表
  18. 【MATLAB】基本绘图 ( 保存图像 | saveas 函数 )
  19. Alexa Top 1000 在中国的访问情况
  20. 计算机情绪识别属于什么方向,情绪检测器

热门文章

  1. 港科夜闻|香港科技大学(广州)功能枢纽微电子学域署理主任须江教授获评IEEE计算机协会首批杰出贡献者...
  2. 北科大matlab第一次作业,北京科技大学应用计算方法作业与答案
  3. 数据库备份和还原bak文件
  4. 编译compile和连接Link
  5. JDK动态代理用例及源码解析
  6. Android集成Facebook第三方登录,全流程
  7. mac安装软件管家homebrew
  8. vue实现打开网页自动播放音乐
  9. 用两个栈做队列(左程云算法学习)
  10. 网络渗透作业之 wireshark抓包校园网