import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.soap.SOAPBinding;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/*
* * Client
*
* @author zhaoshuai
*
* @version 1.0
*/
public class Client {
private static final String NAMESPACE_URL = "http://impl.service.dwjk.fy.np.thunisoft.com";
public static void main(String args[]) {
String className = "CourtBaseInfo";
String method = "getAllPersons";
ArrayList<String> list = new ArrayList<String>();
// list.add("65552");
// list.add("65540");
// list.add("<caseInfo><case bh='2224' ajlb='1' baktxh='4' ft=''/></caseInfo>");
list.add("2");
// list.add("<?xml version='1.0' encoding='UTF-8'?><CaseSpzh type='bean.CaseSpzh'><ajlb>2</ajlb><fyid>10</fyid><lstSpzh></lstSpzh></CaseSpzh>");
// list.add("11");
invoke(className, method, list);
}
public static void invoke(String className, String method,
List<String> paramList) {
String endpointAddress = "http://172.16.26.117:8090/dwjk/services/"
+ className + "?wsdl";
QName SERVICE_NAME = new QName(NAMESPACE_URL, className);
QName PORT_NAME = new QName(NAMESPACE_URL, className + "Port");
// 设置SOAP信息
javax.xml.ws.Service service = javax.xml.ws.Service
.create(SERVICE_NAME);
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING,
endpointAddress);
Dispatch<SOAPMessage> dispatch = service.createDispatch(PORT_NAME,
SOAPMessage.class, javax.xml.ws.Service.Mode.MESSAGE);
BindingProvider bp = (BindingProvider) dispatch;
Map<String, Object> rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, method);
// 调用webservice
SOAPBody soapBody = null;
try {
MessageFactory messageFactory = ((SOAPBinding) bp.getBinding())
.getMessageFactory();
SOAPMessage request = messageFactory.createMessage();
SOAPBody body = request.getSOAPBody();
QName payloadName = new QName(NAMESPACE_URL, method, "ns1");
SOAPBodyElement payload = body.addBodyElement(payloadName);
for (int i = 0; i < paramList.size(); i++) {
payload.addChildElement(new QName("arg" + i)).addTextNode(
paramList.get(i));
}
request.saveChanges();
SOAPMessage reply = null;
reply = dispatch.invoke(request);
soapBody = reply.getSOAPBody();
SOAPBodyElement nextSoapBodyElement = (SOAPBodyElement) soapBody
.getChildElements().next();
SOAPElement soapElement = (SOAPElement) nextSoapBodyElement
.getChildElements().next();
System.out.println(soapElement.getValue());
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
File file = new File("D://test//1.xml");
XMLWriter writer = new XMLWriter(new FileWriter(file), format);
writer.write(DocumentHelper.parseText(soapElement.getValue()));
writer.close();
} catch (Exception wse) {
wse.printStackTrace();
}
}
}