import java.net.URL;
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
public class WsUtilsTest {
/**
* 用java自带的api调用相应的webservice接口
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
URL url = new URL("http://192.168.11.98/TEST/Service.asmx?wsdl");
// 接口名称
QName sname = new QName("http://tempuri.org/", "EmrService");
Service service = Service.create(url, sname);
Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName("http://tempuri.org/", "EmrServiceSoap"),
SOAPMessage.class, Service.Mode.MESSAGE);
//这句话很重要,否则报错服务器未能识别 HTTP 头 SOAPAction 的值
dispatch.getRequestContext().put("javax.xml.ws.soap.http.soapaction.uri", "http://tempuri.org/HelloWorld");
SOAPMessage msg = MessageFactory.newInstance().createMessage();
SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
SOAPBody body = envelope.getBody();
//得到要调用的方法
QName ename = new QName("http://tempuri.org/", "HelloWorld");
SOAPBodyElement ele = body.addBodyElement(ename);
QName ename1 = new QName("http://tempuri.org/", "strPatientId");
ele.addChildElement(ename1).setValue("好人");
// msg.writeTo(System.out);
// System.out.println("");
SOAPMessage response = dispatch.invoke(msg);
// response.writeTo(System.out);
SOAPBody soapBody = response.getSOAPPart().getEnvelope().getBody();
soapBody.getAttributeNode("HelloWorldResult");
System.out.println("ffff===" + soapBody.getElementsByTagName("HelloWorldResult").item(0).getTextContent());
// org.w3c.dom.Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
//这里输入的"loginResult"就是Web服务端定义的login()方法的返回值名称
// System.out.println("\n收到响应:" + doc.getElementsByTagName("HelloWorldResult").item(0).getTextContent());
// String result = String.format("%1$20s", "abc");
// System.out.println(result);
}
}
//这句话很重要,否则报错服务器未能识别 HTTP 头 SOAPAction 的值
dispatch.getRequestContext().put("javax.xml.ws.soap.http.soapaction.uri", "http://tempuri.org/HelloWorld");