soap

public class Client {
	private String ns = "http://{IP}:{端口}/axis/services/MessageService";//命名空間
	private String wsdlUrl = "http://{IP}:{端口}//axis/services/MessageService?wsdl";

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("06913145");
		list.add("6491304323");
		list.add("324545316163");
		for(String phoneno : list){
			System.out.println(phoneno);
			System.out.println("--------------------------------");
			new Client().test(phoneno);
			System.out.println("--------------------------------");
		}
	//new Client().test("sdfsd");
	}

	public  void test(String phoneno){
		try{
			//1、創建服務(Service)
			URL url = new URL(wsdlUrl);
			QName sname = new QName(ns,"MessageServiceService");
			Service service = Service.create(url,sname);

			//2、創建Dispatch
			Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"MessageService"),//portName,對應wsdl寫。
			SOAPMessage.class, Service.Mode.MESSAGE);

			//3、創建SOAPMessage
			SOAPMessage msg = MessageFactory.newInstance().createMessage();
			SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
			SOAPBody body = envelope.getBody();

			//3.2、處理header信息
			SOAPHeader header = envelope.getHeader();
			if(header==null) header = envelope.addHeader();
			QName userName = new QName("blueslice.com","UserName","ns1");
			header.addHeaderElement(userName).setValue("admin");

			QName password = new QName("blueslice.com","Passwd","ns2");
			header.addHeaderElement(password).setValue("admin");

			//4、創建QName來指定消息中傳遞數據
			QName ename = new QName("http://webservice.blueslice.com","processTransaction");//<nn:add xmlns="xx"/>
				   String select = getSelectStr(phoneno);
			body.addBodyElement(ename).addTextNode(getSelectStr(phoneno));
			msg.writeTo(System.out);
			System.out.println("\n invoking.....");

			//5、通過Dispatch傳遞消息,會返回響應消息
			SOAPMessage response = dispatch.invoke(msg);
			response.writeTo(System.out);
			SOAPBody ycBody = response.getSOAPBody();  
			Node ycResp = ycBody.getFirstChild(); 
			String res = ycResp.getTextContent();
			String error = ycResp.getAttributes().getNamedItem("error").getNodeValue();//error爲0
			boolean isOK = res.contains("res error=\"0\"");
			System.out.println(isOK);
		} catch (SOAPException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
}

	public String getUpdateStr(){
	省略。。。
	}

	public String getSelectStr(String phoneno){
	省略。。。

	}
}


發佈了37 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章