jax-ws

https://www.cnblogs.com/visec479/p/4116005.html

https://blog.csdn.net/zmx729618/article/details/51351908

package zmx.jaxws.soap;

import java.io.StringWriter;
import java.net.URL;

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.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;

import org.w3c.dom.Document;

public class SOAPTest {

private static String ns = “http://service.jsgacrj/”;
private static String wsdlUrl = “http://localhost:8080/TestService/UserInfoPort?wsdl”;

/**
* 创建SOAP消息,并提交得到返回值
* @author WHuan
*/

public static void soapDispatch() {
try {
// 创建服务service
URL url = new URL(wsdlUrl);
QName sname= new QName(ns,”UserInfoService”);
Service service =Service.create(url,sname);

//创建DIspatch
Dispatch<SOAPMessage> dispatch=service.createDispatch(new QName(ns,”UserInfoPort”),
SOAPMessage.class, Service.Mode.MESSAGE);

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

//创建QName来指定消息中传递数据
QName ename=new QName(ns,”GetUserInfo”,”nn”);
//<nn:add xmlns=”xx”/>
SOAPBodyElement ele=body.addBodyElement(ename);
ele.addChildElement(“id”).setValue(“22”);

msg.writeTo(System.out);
System.out.println(“\n invoking….”);

//通过Dispatch传递消息,会返回相应消息
SOAPMessage response = dispatch.invoke(msg);
response.writeTo(System.out);
System.out.println();
Document doc = response.getSOAPPart().getEnvelope().getOwnerDocument();
StringWriter output = new StringWriter();
TransformerFactory.newInstance().newTransformer().transform( new DOMSource(doc), new StreamResult(output));
System.out.println(output.toString());
//将相应的消息转换为doc对象
/*Document doc= response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
String str=doc.getElementsByTagName(“addResult”).item(0).getTextContent();
System.out.println(str);*/

} catch (Exception e) {
e.printStackTrace();
}
}public static void main(String[] args){
soapDispatch();
}

}


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注