package com.jc.webservice;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
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.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.nio.charset.Charset;
public class SoapDemo {
public static void main(String[] args) throws IOException {
supportCityDataset("31124");
}
public static void regionCountry() throws IOException {
String url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx";
String soapXml = getRegionCountryXml();
String soapAction = "http://WebXml.com.cn/getRegionCountry";
execute(url, soapXml, soapAction);
}
private static String getRegionCountryXml() {
StringBuffer soapXml = new StringBuffer();
soapXml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
.append("<soap:Body>")
.append("<getRegionCountry xmlns=\"http://WebXml.com.cn/\" />")
.append("</soap:Body>")
.append("</soap:Envelope>");
System.out.println("soapXml: " + JSON.toJSONString(soapXml));
return soapXml.toString();
}
public static void regionDataset() throws IOException {
String url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx";
String soapXml = getRegionDatasetXml();
String soapAction = "http://WebXml.com.cn/getRegionDataset";
execute(url, soapXml, soapAction);
}
private static String getRegionDatasetXml() {
StringBuffer soapXml = new StringBuffer();
soapXml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
.append("<soap:Body>")
.append("<getRegionDataset xmlns=\"http://WebXml.com.cn/\" />")
.append("</soap:Body>")
.append("</soap:Envelope>");
System.out.println("soapXml: " + JSON.toJSONString(soapXml));
return soapXml.toString();
}
public static void regionProvince() throws IOException {
String url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx";
String soapXml = getRegionProvinceXml();
String soapAction = "http://WebXml.com.cn/getRegionProvince";
execute(url, soapXml, soapAction);
}
private static String getRegionProvinceXml() {
StringBuffer soapXml = new StringBuffer();
soapXml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
.append("<soap:Body>")
.append("<getRegionProvince xmlns=\"http://WebXml.com.cn/\" />")
.append("</soap:Body>")
.append("</soap:Envelope>");
System.out.println("soapXml: " + JSON.toJSONString(soapXml));
return soapXml.toString();
}
public static void supportCityDataset(String regionCode) throws IOException {
String url = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx";
String soapXml = getSupportCityDatasetXml(regionCode);
String soapAction = "http://WebXml.com.cn/getSupportCityDataset";
execute(url, soapXml, soapAction);
}
private static String getSupportCityDatasetXml(String regionCode) {
StringBuffer soapXml = new StringBuffer();
soapXml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
.append("<soap:Body>")
.append("<getSupportCityDataset xmlns=\"http://WebXml.com.cn/\">")
.append("<theRegionCode>")
.append(regionCode)
.append("</theRegionCode>")
.append("</getSupportCityDataset>")
.append("</soap:Body>")
.append("</soap:Envelope>");
System.out.println("soapXml: " + JSON.toJSONString(soapXml));
return soapXml.toString();
}
public static void weather(String cityCode) throws IOException {
String url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
String soapXml = getWeatherXml(cityCode);
String soapAction = "http://WebXml.com.cn/getWeatherbyCityName";
execute(url, soapXml, soapAction);
}
private static String getWeatherXml(String cityCode) {
StringBuffer soapXml = new StringBuffer();
soapXml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
.append("<soap:Body>")
.append("<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">")
.append("<theCityName>")
.append(cityCode)
.append("</theCityName>")
.append("</getWeatherbyCityName>")
.append("</soap:Body>")
.append("</soap:Envelope>");
System.out.println("soapXml: " + JSON.toJSONString(soapXml));
return soapXml.toString();
}
public static void execute(String url, String soapXml, String soapAction) throws IOException {
HttpPost httpPost = new HttpPost(url);
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 = HttpClientBuilder.create().build().execute(httpPost);
System.out.println(JSONObject.toJSONString("response: " + response));
HttpEntity entity = response.getEntity();
String entityStr = EntityUtils.toString(entity, Charset.forName("UTF-8"));
System.out.println(JSONObject.toJSONString("entityStr: " + entityStr));
}
}
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.50</version>
</dependency>