Java访问WebService返回XML数据的方法
本文实例讲述了Java访问WebService返回XML数据的方法。分享给大家供大家参考。具体如下:
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.MalformedURLException;
importjava.net.URL;
importjava.net.URLConnection;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.PrintWriter;
importorg.w3c.dom.Document;
importorg.w3c.dom.DOMException;
importorg.xml.sax.SAXException;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerConfigurationException;
importjavax.xml.transform.TransformerException;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
/***
*@authorxuechong
*6/11/201016:58
*DomXMLString.java
*概述:纯java方式访问远程WebService接口返回的xml格式的数据保存在本地
*/
publicclassDomXMLString{
privatestaticStringSERVICES_HOST="www.webxml.com.cn";
//远程WebService接口url
privatestaticStringNETDATA_URL="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince";
//访问远程WebService接口返回的xml格式的数据保存在本地的绝对路径
privatestaticStringLOCAL_PC_SAVEFILE_URL="E:dataTest/netDataToLocalFile.xml";
privateDomXMLString(){}
publicstaticvoidmain(String[]args)throwsException{
Documentdocument=getProvinceCode(NETDATA_URL);
helloOK(document,LOCAL_PC_SAVEFILE_URL);
}
/*返回一个Document对象*/
publicstaticDocumentgetProvinceCode(StringnetXMLDataURL){
Documentdocument=null;
DocumentBuilderFactorydocumentBF=DocumentBuilderFactory.newInstance();
documentBF.setNamespaceAware(true);
try{
DocumentBuilderdocumentB=documentBF.newDocumentBuilder();
InputStreaminputStream=getSoapInputStream(netXMLDataURL);
//具体webService相关
document=documentB.parse(inputStream);
inputStream.close();
}catch(DOMExceptione){
e.printStackTrace();
returnnull;
}catch(ParserConfigurationExceptione){
e.printStackTrace();
returnnull;
}catch(SAXExceptione){
e.printStackTrace();
returnnull;
}catch(IOExceptione){
e.printStackTrace();
returnnull;
}
returndocument;
}
/*返回InputStream对象*/
publicstaticInputStreamgetSoapInputStream(Stringurl){
InputStreaminputStream=null;
try{
URLurlObj=newURL(url);
URLConnectionurlConn=urlObj.openConnection();
urlConn.setRequestProperty("Host",SERVICES_HOST);
//具体webService相关
urlConn.connect();
inputStream=urlConn.getInputStream();
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returninputStream;
}
/*访问远程(WebService)xml数据后返回的xml格式字符串并生成为本地文件*/
publicstaticvoidhelloOK(Documentdocument,StringsavaFileURL){
TransformerFactorytransF=TransformerFactory.newInstance();
try{
Transformertransformer=transF.newTransformer();
DOMSourcesource=newDOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT,"YES");
PrintWriterpw=newPrintWriter(newFileOutputStream(savaFileURL));
StreamResultresult=newStreamResult(pw);
transformer.transform(source,result);
System.out.println("生成xml文件成功!");
}catch(TransformerConfigurationExceptione){
System.out.println(e.getMessage());
}catch(IllegalArgumentExceptione){
System.out.println(e.getMessage());
}catch(FileNotFoundExceptione){
System.out.println(e.getMessage());
}catch(TransformerExceptione){
System.out.println(e.getMessage());
}
}
}
希望本文所述对大家的java程序设计有所帮助。