客户端几种实现方式(转载)
Demo-HttpClient
public static void main(String[] args) throws Exception {//soap服务地址String url = "http://10.104.168.38:6906/sip/services/XJSSServices?wsdl";StringBuilder soapBuilder = new StringBuilder(64);soapBuilder.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xj=\"http://XJ.sbss.dc.com\">");soapBuilder.append(" <soapenv:Header/>");soapBuilder.append(" <soapenv:Body>");soapBuilder.append(" <xj:QuerySwGxxx>");soapBuilder.append(" <xj:bwlx>CBXX001</xj:bwlx>");soapBuilder.append(" <xj:bw></xj:bw>");soapBuilder.append(" </xj:QuerySwGxxx>");soapBuilder.append(" </soapenv:Body>");soapBuilder.append("</soapenv:Envelope>");//创建httpcleint对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建http Post请求HttpPost httpPost = new HttpPost(url);// 构建请求配置信息RequestConfig config = RequestConfig.custom().setConnectTimeout(1000) // 创建连接的最长时间.setConnectionRequestTimeout(500) // 从连接池中获取到连接的最长时间.setSocketTimeout(3 * 1000) // 数据传输的最长时间10s.build();httpPost.setConfig(config);CloseableHttpResponse response = null;try {//采用SOAP1.1调用服务端,这种方式能调用服务端为soap1.1和soap1.2的服务httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");httpPost.setHeader("SOAPAction", "http://10.104.168.38:6906/sip/services/XJSSServices?wsdl");//采用SOAP1.2调用服务端,这种方式只能调用服务端为soap1.2的服务StringEntity stringEntity = new StringEntity(soapBuilder.toString(), Charset.forName("UTF-8"));httpPost.setEntity(stringEntity);response = httpClient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {String content = EntityUtils.toString(response.getEntity(), "UTF-8");System.out.println("------------:"+content);} else {System.out.println("调用失败!");}} catch (Exception e) {e.printStackTrace();} finally {if (null != response) {response.close();}if (null != httpClient) {httpClient.close();}}}