import org.apache.commons.lang3.StringEscapeUtils; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.nio.charset.Charset; public class WebServiceTest { public static void main(String[] args) { String url = "http://192.168.42.111:8080/web/services/testServImpl?wsdl"; // 根据实际情况拼接xml String xmlData = "<soapenv:Envelope\n" + " xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" + " xmlns:impl=\"http://impl.service.web.cn\">\n" + " <soapenv:Header></soapenv:Header>\n" + " <soapenv:Body></soapenv:Body>\n" + "</soapenv:Envelope>"; String postSoap = doPostSoap(url, xmlData, ""); // 去除转义字符 String unPostSoap = StringEscapeUtils.unescapeXml(postSoap); System.out.println(unPostSoap); } //使用SOAP1.1发送消息 public static String doPostSoap(String postUrl, String soapXml, String soapAction) { String retStr = ""; // 创建HttpClientBuilder HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); // HttpClient CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); HttpPost httpPost = new HttpPost(postUrl); // 设置请求和传输超时时间 RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(6000) .setConnectTimeout(6000).build(); httpPost.setConfig(requestConfig); try { httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8"); httpPost.setHeader("SOAPAction", soapAction); StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8")); httpPost.setEntity(data); CloseableHttpResponse response = closeableHttpClient.execute(httpPost); HttpEntity httpEntity = response.getEntity(); if (httpEntity != null) { // 打印响应内容 retStr = EntityUtils.toString(httpEntity, "UTF-8"); System.out.println("response:" + retStr); } // 释放资源 closeableHttpClient.close(); } catch (Exception e) { e.printStackTrace(); } return retStr; } }
Java 通过Soap方式调用WebService接口
最新推荐文章于 2024-05-21 17:55:27 发布