1. 程式人生 > >WebService學習筆記(四)

WebService學習筆記(四)

一 soap訊息的格式

這裡寫圖片描述

二 soap訊息的建立

java程式碼:

//1、建立訊息工廠
MessageFactory factory = MessageFactory.newInstance();
//2、根據訊息工廠建立SoapMessage
SOAPMessage message = factory.createMessage();
//3、建立SOAPPart
SOAPPart part = message.getSOAPPart();
//4、獲取SOAPENvelope
SOAPEnvelope envelope = part.getEnvelope();
//5、可以通過SoapEnvelope有效的獲取相應的Body和Header等資訊
SOAPBody body = envelope.getBody(); //6、根據Qname建立相應的節點(QName就是一個帶有名稱空間的節點) //<ns:add xmlns="http://java.zttc.edu.cn/webservice"/> QName qname = new QName("http://java.zttc.edu.cn/webservice", "add","ns"); //如果使用以下方式進行設定,會見<>轉換為&lt;和&gt //body.addBodyElement(qname).setValue("<a>1</a><b>2</b>");
SOAPBodyElement ele = body.addBodyElement(qname); ele.addChildElement("a").setValue("22"); ele.addChildElement("b").setValue("33"); //列印訊息資訊 message.writeTo(System.out);

三 訊息傳遞

java程式碼:

//1、建立服務(Service)
URL url = new URL(wsdlUrl);
QName sname = new QName(ns,"MyServiceImplService");
Service service = Service.create
(url,sname); //2、建立Dispatch Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),SOAPMessage.class,Service.Mode.MESSAGE); //3、建立SOAPMessage SOAPMessage msg = MessageFactory.newInstance().createMessage(); SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope(); SOAPBody body = envelope.getBody(); //4、建立QName來指定訊息中傳遞資料 QName ename = new QName(ns,"add","nn");//<nn:add xmlns="xx"/> SOAPBodyElement ele = body.addBodyElement(ename); ele.addChildElement("a").setValue("22"); ele.addChildElement("b").setValue("33"); msg.writeTo(System.out); System.out.println("\n invoking....."); //5、通過Dispatch傳遞訊息,會返回響應訊息 SOAPMessage response = dispatch.invoke(msg); response.writeTo(System.out); System.out.println(); //6、響應訊息處理,將響應的訊息轉換為dom物件 Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument(); String str = doc.getElementsByTagName("addResult").item(0).getTextContent(); System.out.println(str);