选取自己写的代码和部分以下博客内容
https://blog.csdn.net/menghuanzhiming/article/details/78475785
方式一:使用HttpURLConnection调用方式
document为入参组织对象,注意:dom4j要求root根节点只有一个,多节点请使用方式二。
private Object[] connectWS(org.dom4j.Document document,String url){ JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); System.out.println("wsUrl===="+url); Client client = factory.createClient(url); // 需要密码的情况需要加上用户名和密码 //client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME,PASS_WORD)); HTTPConduit conduit = (HTTPConduit) client.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(2000); //连接超时 httpClientPolicy.setAllowChunking(false); //取消块编码 httpClientPolicy.setReceiveTimeout(120000); //响应超时 conduit.setClient(httpClientPolicy); Object[] objects = null; try { String s = document.asXML(); System.out.println("数据:--->>>" + s); objects = client.invoke("process", s); String result = objects.toString(); System.out.println("返回数据:result---->>>" + result); System.out.println("返回数据:---->>>" + objects[0]); } catch (Exception e) { e.printStackTrace(); } return objects; }
方式二:使用idea生成webservice客户端接口IIHService(wsimport生成客户端代码 )
(1)使用生成的IIHServiceService调用IIHService
IIHServiceService iihServiceService = new IIHServiceService(); IIHService iihService= iihServiceService.getIIHServicePort(); // iihService 调用接口
String xml = "入参的xml格式";
String result = iihService.process("XXX",xml);
System.out.println(result);
(2) 使用service编程调用IIHService
package XX; import java.io.IOException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import XX.IIHService ; /** * * Title: ServiceClient.java * Description:Service编程实现服务端调用 * 这种方式同样需要wsimport生成客户端代码,只不过仅需要将服务接口类引入即可,例如如果需要 * 端口服务,则需要将生成的IIHService .class类引入 */ public class ServiceClient { public static void main(String[] args) throws IOException { //创建WSDL的URL,注意不是服务地址 URL url = new URL("http://IIII:PPPP/CC/IIHService?wsdl"); //创建服务名称 //1.namespaceURI - 命名空间地址 (wsdl文档中的targetNamespace) //2.localPart - 服务视图名 (wsdl文档中服务名称,例如<wsdl:service name="MobileCodeWS">) QName qname = new QName("http://IIII/", "IIHServicePort"); //创建服务视图 //参数解释: //1.wsdlDocumentLocation - wsdl地址 //2.serviceName - 服务名称 Service service = Service.create(url, qname); //获取服务实现类 //参数解释:serviceEndpointInterface - 服务端口(wsdl文档中服务端口的name属性) IIHService iihService= service.getPort(IIHService.class); //调用查询方法 String xml = "入参的xml格式"; String result = iihService.process("XXX",xml); System.out.println(result); } }