Java使用SOAP调用WebService

1、webservice三要素
Webservice三要素包括:SOAP、WSDL、UDDI
soap用来描述传递信息的格式;
wsdl用来描述如何访问具体的接口
uudi用来管理,分发,查询webservice。
soap使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用INternet上各种不同操作环境中的分布式对象;
2、相关定义:
1、基于类对象的传输协议
2、soap封装(envlop),定义了一个框架,描述消息中的内容是什么,是谁发送的,
应当接受并处理它以及如何处理他们;
3、soap编码规则(encoding rules),定义了一种序列化机制,用于标识应用程序需要使用的数据类型的实例;
4、soap rpc 表示,它定义了一个协定,用于标识远程过程中调用和应答;
5、soap 绑定(binding),定义了soap使用哪种协议交换性喜,使用HTTP/TCP/UDP协议都可以;
3、构建模块
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
4、语法规则
SOAP 消息必须用 XML 来编码
SOAP 消息必须使用 SOAP Envelope 命名空间
SOAP 消息必须使用 SOAP Encoding 命名空间
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 处理指令
5、优点:
1、可扩展的
2、简单的
3、万泉河厂商无关
4、与编程语言无关
5、与平台无关

6、功能实现
1、定义访问地址,以及调用的方法名称

 //地址
    String urlString = "http://124.114.156.246:18010/WmsJcspzl.asmx?wsdl";
    //方法
    String soapActionString = "http://ws.jcspzl/ReceiveJcspzl";

2、连接请求路径,拼接请求体

 URL url = new URL(urlString);
    HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
    //拼接请求体
	String soap = ""
			+""
			+""
			+""
			+""
			+""
			 +"  "
	        +" "
	        +"  "
	        +"";

3、设置请求头参数(重点)

 byte[] buf = soap.getBytes();
    //设置一些头参数
    httpConn.setRequestProperty("Content-Length", String.valueOf(buf.length));
    httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
    httpConn.setRequestProperty("SOAPAction", soapActionString);
    httpConn.setRequestMethod("POST");

4、打印响应结果,并进行处理

//输入参数和输出结果
    httpConn.setDoOutput(true);
    httpConn.setDoInput(true);
    OutputStream out = httpConn.getOutputStream();
    out.write(buf);
    out.close();
    
    byte[] datas = readInputStream(httpConn.getInputStream());
    String result = new String(datas);
    String a=result.replaceAll(">", ">").replaceAll("<", "<");
   return a;

5、结果字符串进行xml格式转换




    
        
            
            
                
                    20190824000147
                    
                    S
                    
                
            
        
    


你可能感兴趣的:(Java使用SOAP调用WebService)