Java学习之SoapUI报文发送和解析

您所在的位置:网站首页 soapui测试wsdl Java学习之SoapUI报文发送和解析

Java学习之SoapUI报文发送和解析

2023-03-15 15:25| 来源: 网络整理| 查看: 265

SoapUI工具测试 1、新建项目

2、编写名称和填写url路径,点击Ok 测试url:http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl 

这是个测试获取电视节目的url

3、软件会自动创建demo,所以可以直接打开报文demo组装信息

Java代码实现 1、组装报文 public static String getMessage() { StringBuffer buff = new StringBuffer(); buff.append(""); buff.append(""); buff.append(""); buff.append(""); buff.append(""); buff.append(""); return buff.toString(); } 2、发送并接收请求

 补充:需要pom.xml中引入“dom4j”的依赖

dom4j dom4j 1.6.1 public class RequestUtil { private final static String REQUEST_METHOD = "POST"; public static Document sendRequest(String url, String message) { URL connect; HttpURLConnection connection = null; Document resDoc = null; if (StringUtils.isEmpty(url)) { return null; } try { connect = new URL(url); connection = (HttpURLConnection) connect.openConnection(); connection.setRequestMethod(REQUEST_METHOD); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false);// post请求不能使用缓存 //设置连接超时时间 connection.setConnectTimeout(2000); connection.setReadTimeout(10000); connection.setInstanceFollowRedirects(true); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); OutputStreamWriter outParam = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); outParam.write(message); outParam.flush(); outParam.close(); InputStream responseIn = connection.getInputStream(); SAXReader reader = new SAXReader(); resDoc = reader.read(responseIn); return resDoc; } catch (Exception e) { log.info(e.getMessage()); } finally { connection.disconnect(); } return resDoc; } } 3、解析返回报文 public class SoapService { public void getSoapResponse() { String message = RequestUtil.getMessage(); String url = "http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl"; Document document = UrlSendUtil.sendRequest(url, message); List elementList1 = document.getRootElement().elements(); for (Element element1 : elementList1) { List elementList2 = element1.elements(); for (Element element2 : elementList2) { List elementList3 = element2.elements(); for (Element element3 : elementList3) { List elementList4 = element3.elements(); for (Element element4 : elementList4) { System.out.println(element4.getName() + " - " + element4.getStringValue()); } } } } } public static void main(String[] args) { SoapService soapService = new SoapService(); soapService.getSoapResponse(); } } 结果 string - -4@数字电视@数字 string - -3@海外电视@海外 string - -2@卫星电视@卫星 string - -1@中央电视@中央 string - 1@北京市@华北地区 string - 2@天津市@华北地区 string - 3@河北省@华北地区 string - 4@山西省@华北地区 string - 5@内蒙古自治区@华北地区 string - 6@辽宁省@东北地区 string - 7@吉林省@东北地区 string - 8@黑龙江省@东北地区 string - 9@上海市@华东地区 string - 10@江苏省@华东地区 string - 11@浙江省@华东地区 string - 12@安徽省@华中地区 string - 13@福建省@华南地区 string - 14@江西省@华中地区 string - 15@山东省@华东地区 string - 16@河南省@华中地区 string - 17@湖北省@华中地区 string - 18@湖南省@华中地区 string - 19@广东省@华南地区 string - 20@广西壮族自治区@华南地区 string - 21@海南省@华南地区 string - 22@重庆市@西南地区 string - 23@四川省@西南地区 string - 24@贵州省@西南地区 string - 25@云南省@西南地区 string - 26@西藏自治区@西南地区 string - 27@陕西省@西北地区 string - 28@甘肃省@西北地区 string - 29@青海省@西北地区 string - 30@宁夏回族自治区@西北地区 string - 31@新疆维吾尔自治区@西北地区 string - 32@香港@港澳台地区 string - 33@澳门@港澳台地区 string - 34@台湾省@港澳台地区

补充:因为返回结果不同,而且是从rootElement解析,所以可以写个递归方法,例如:

public List getSoapUIResponse(List elements) { for (Element element : elements) { if ("string".equals(element.getName())) {//取什么节点的值根据实际业务确定 return element.elements(); } return getSoapUIResponse(element.elements()); } return null; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3