当前位置:首页>开发>正文

java中怎样在webservice中输出一个XML格式个文件 如何让webservice返回xml

2023-05-30 15:16:34 互联网 未知 开发

 java中怎样在webservice中输出一个XML格式个文件 如何让webservice返回xml

java中怎样在webservice中输出一个XML格式个文件

/***
* 概述:纯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())
}
}

}

如何让webservice返回xml

用StringBuffer,具体可以这样做:

public class ZTservice {

public StringGetXmlDataByCity(String city)
{
StringBuffer strBuffer = new StringBuffer()

//此处为业务逻辑处理,省略
strBuffer.append("xxxxxx")
最后返回的格式可以如下


这个具体的格式是可以改的,里面的一些errCode的都可以自己命名,但是
最后的格式要是正确的xml格式
return strBuffer.toString()
}
}

怎样在java 中调用web service 传入参数返回xml?

js 代码

function ajaxRequest()
{
var url = "http://********.asmx"

//设置webService传入参数
//
//注意:
//
// 调用.Net 写的webservice(如例子中的webservicedemo.asmx)
// HelloTo(String name) 针对name参数必须写成 <name></name>wqj,还有更多参数一样写,使用名称匹配
// 传入的参数数量可以不等于(多于或少于)方法要求的参数
//
// 调用java(xfire) 发布的webService
// 传入的参数必须与调用方法的参数数量相等,且按传入值的顺序进行匹配
//

var para = "<name></name>wqj" 这里应该是一个标准的xml形式,源码贴出来时被虑掉了,请参看附件源码

var op = {
data:para,
onComplete: showResponse,
onFailure:showError,
update:ajaxBack
}

var service = new WebService(url,"HelloTo",op)
service.request()
return false
}
function showError(obj)
{
//obj 是一个xmlHttpRequest对象
alert("error")
}
function showResponse(requestText,requestXML)
{
//requestText 返回的文本
//requestXML 返回的XML
alert("ok")
}

最新文章