Intellij IDEA开发WebService调用调气预报并生成Weather.xml
1.新建WebService项目
2.在example包下新建一个WeatherWebService.wsdl文件,并将http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
中的内容复制过去
3.将其中的<a href…等中文内容删掉 ,直到idea WeatherWebService.wsdl 不报错为止
4.将 <s:element ref=“s:schema”/>下的<s:any/>改成 <s:any minOccurs=“2” maxOccurs=“2”/>
5.在WeatherWebService.wsdl上右键,webservice=>Generate JavaCode from wsdl
6.选择生成客户端client
客户端代码:
package test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.rpc.ServiceException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.rmi.RemoteException;
public class WeatherClient {
public static void main(String[] args) throws ServiceException, RemoteException, ParserConfigurationException {
WeatherWSLocator wws = new WeatherWSLocator();
WeatherWSSoap_PortType wwsp = wws.getWeatherWSSoap();
String[] weather = wwsp.getWeather("北京",null);
for (String wea : weather) {
System.out.println(wea);
}
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element arrayOfString = document.createElement("ArrayOfStirng"); //根节点
document.appendChild(arrayOfString);
for (String wea : weather) {
Element sElement = document.createElement("content");
Text info = document.createTextNode(wea);
arrayOfString.appendChild(sElement);
sElement.appendChild(info);
}
// fileOutputStream.flush();
// fileOutputStream.close();
doc2XmlFile(document, "weather.xml");
}
private static void doc2XmlFile(Document document, String fileName) {
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
//编码
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(fileName));
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}