导航

soap 协议借口测试初尝 --小试牛刀

Posted on 2017-07-10 11:50  Young哥哥  阅读(172)  评论(0)    收藏  举报

  第一步:将借口测试文档中,对要进行的soap协议的wsdl地址进行验证,放到浏览器查看:

 

第二步:将浏览器中拷贝下来的地址放在soapUI 中进行查看具体的方法名以及参数:

http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl

 

 第三步:对照文档查看具体的测试接口方法:

这里我们先以soup 协议 1.1 版本的为例:图中标记红框处;

黄色框标记的是我们具体要测试的接口;

第四步:展开我们测试的接口进行查看:

 

  图中,左侧是手工添加数据进行测试, 右边是具体的返回响应 ;

第五步:以代码形式进行接口测试;

	@Test
	public void doGetTV() throws ClientProtocolException, IOException {

		// 1. 定义xml
		/*  这里我们要把上图中xml数据复制过来进行转义操作,作为实体对象进行封装
		String xml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://WebXml.com.cn/\">"
				+ "<soapenv:Header/>" + "<soapenv:Body>" + "<web:getTVstationString>"
				+ "<web:theAreaID>3</web:theAreaID>" + "</web:getTVstationString>" + "</soapenv:Body>"
				+ "</soapenv:Envelope>";
		 */
		
		String xml ="<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:web=\"http://WebXml.com.cn/\">"
				+"<soap:Header/>"
				+"<soap:Body>"
				+"<web:getTVstationString>"
				+"<web:theAreaID>3</web:theAreaID>"
				+"</web:getTVstationString>"
				+"</soap:Body>"
				+"</soap:Envelope>";
		// 2.定义 client端
		CloseableHttpClient client = HttpClients.createDefault();
		// 3. 定义post 请求对象, 这里填写的地址是浏览器中的地址
		HttpPost post = new HttpPost("http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl");
		// 4.定义 StringEntity实体化 使用 xml 和字符编码进行初始化
		StringEntity entity = new StringEntity(xml);
		// 5.设置head --> Content-type ; 因为协议版本不同,soap 1和 2 不同之处在于 请求行信息格式,以及消息头的不同
具体说明;请看以下截图
1.0 版本协议的详细信息
                               

                                2.0版本的详细信息

          

 

                                 经过比较发现, 1.0和2.0 最大不同之处在于 请求的数据格式不同,还有消息行中 1.0 将 action 单独提取出来

                                 作为一个协议体类型,改名为SoapAction ,而2.0直接封装在Content-type中; 

                               // 做借口测试中要特别留意;

		//post.setHeader("Content-Type", "text/xml;charset=UTF-8");
		
		post.setHeader("Content-Type","application/soap+xml;charset=UTF-8;action=\"urn:add\"");
		//  application/soap+xml;charset=UTF-8;action="urn:add  

		// 6. 设置实体
		post.setEntity(entity);
		// 7. 设置 执行后返回的响应结果
		CloseableHttpResponse response = client.execute(post);
		// 8. 返回响应后的数据结果\
		HttpEntity httpEntity = response.getEntity();

		String result = EntityUtils.toString(httpEntity);
//这里我们先打印出结果 System.out.println(result);
// 9. 这里就和具体的借口文档中要对比的数据进行比对即可;