Java访问WebService返回XML数据的方法

作者:liuzx32 时间:2023-11-10 21:23:09 

本文实例讲述了Java访问WebService返回XML数据的方法。分享给大家供大家参考。具体如下:


import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
/***
* @author xuechong
* 6/11/2010 16:58
* DomXMLString.java
* 概述:纯java方式访问远程WebService接口返回的xml格式的数据保存在本地
*/
public class DomXMLString{
private static String SERVICES_HOST = "www.webxml.com.cn";
//远程WebService接口url
private static String NETDATA_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince";
//访问远程WebService接口返回的xml格式的数据保存在本地的绝对路径
private static String LOCAL_PC_SAVEFILE_URL = "E:dataTest/netDataToLocalFile.xml";
private DomXMLString(){}
public static void main(String[] args) throws Exception{
Document document = getProvinceCode(NETDATA_URL);
helloOK(document, LOCAL_PC_SAVEFILE_URL);
}
/*返回一个Document对象*/
public static Document getProvinceCode(String netXMLDataURL){
Document document = null;
DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
documentBF.setNamespaceAware(true);
try{
DocumentBuilder documentB = documentBF.newDocumentBuilder();
InputStream inputStream = getSoapInputStream(netXMLDataURL);
//具体webService相关
document = documentB.parse(inputStream);
inputStream.close();
}catch(DOMException e){
e.printStackTrace();
return null;
}catch(ParserConfigurationException e){
e.printStackTrace();
return null;
}catch (SAXException e){
e.printStackTrace();
return null;
}catch(IOException e){
e.printStackTrace();
return null;
}
return document;
}
/*返回InputStream对象*/
public static InputStream getSoapInputStream(String url){
InputStream inputStream = null;
try{
URL urlObj = new URL(url);
URLConnection urlConn = urlObj.openConnection();
urlConn.setRequestProperty("Host", SERVICES_HOST);
//具体webService相关
urlConn.connect();
inputStream = urlConn.getInputStream();
}catch(MalformedURLException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return inputStream;
}
/*访问远程(WebService)xml数据后返回的xml格式字符串并生成为本地文件*/
public static void helloOK(Document document, String savaFileURL){
TransformerFactory transF = TransformerFactory.newInstance();
try{
Transformer transformer = transF.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "YES");
PrintWriter pw = new PrintWriter(new FileOutputStream(savaFileURL));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("生成xml文件成功!");
}catch(TransformerConfigurationException e){
System.out.println(e.getMessage());
}catch(IllegalArgumentException e){
System.out.println(e.getMessage());
}catch(FileNotFoundException e){
System.out.println(e.getMessage());
}catch(TransformerException e){
System.out.println(e.getMessage());
}
}
}

希望本文所述对大家的java程序设计有所帮助。

标签:Java,WebService,XML
0
投稿

猜你喜欢

  • 简单实现Android绘图板

    2021-09-11 06:36:23
  • Java设计模式之动态代理模式实例分析

    2022-07-07 17:55:07
  • Java探索之Thread+IO文件的加密解密代码实例

    2023-01-26 19:07:03
  • JAVA+Struts2获取服务器地址的方法

    2022-01-26 22:25:11
  • Android build文件的删除的方法

    2022-12-28 12:40:17
  • 解决FeignClient发送post请求异常的问题

    2022-08-08 15:55:58
  • SpringBoot深入分析讲解监听器模式上

    2022-06-25 21:04:04
  • 浅谈Android硬件加速原理与实现简介

    2022-04-20 14:11:36
  • Java 提取照片的EXIF信息批量重命名

    2023-10-05 14:11:28
  • Android使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信界面

    2021-09-04 15:39:22
  • C#访问SqlServer设置链接超时的方法

    2022-11-19 17:43:21
  • Java struts2捕获404错误的方法汇总

    2021-10-14 00:12:16
  • Java重写equals及hashcode方法流程解析

    2023-10-14 06:53:13
  • Android编程实现wifi扫描及连接的方法

    2022-11-21 21:11:36
  • Java设计模式之原型设计示例详解

    2023-08-04 04:53:35
  • Android源码系列之深入理解ImageView的ScaleType属性

    2022-12-14 07:51:59
  • 微服务通过Feign调用进行密码安全认证操作

    2023-07-30 02:43:38
  • JAVA中AES加密方法实例分析

    2023-12-18 13:09:40
  • 详解Android Studio 3.0的新特性与适配

    2023-04-29 05:15:05
  • Java流程控制break和continue

    2023-06-16 09:49:54
  • asp之家 软件编程 m.aspxhome.com