当前位置:首页 » 网页前端 » webservicexml
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

webservicexml

发布时间: 2023-03-11 04:44:24

‘壹’ webservice返回的xml怎么解析

webservice返回的xml解析方法:

一般来说,调用webService通常需要几个步骤,在调用之前,首先需要下载Soap的jar包。

1、参数设置:上面说到的几个参数都要先设置,这主要依赖于要调用的web'Service的网址:

//命名空间

StringnameSpace="http://WebXml.com.cn/";

//调用的方法名称

StringmethodName="getDetailInfoByTrainCode";

//EndPoint

StringendPoint="http//webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx";

//SOAPAction

StringsoapAction="http//WebXml.com.cn/getDetailInfoByTrainCode";

2、指定命名空间与调用方法名

//指定WebService的命名空间和调用的方法名

SoapObjectrpc=newSoapObject(nameSpace,methodName);

3、设置参数:

//设置需调用WebService接口需要传入的两个参数TrainCode、userId

rpc.addProperty("TrainCode",params[0]);

rpc.addProperty("UserID","");

4、生成调用WebService方法的SOAP请求信息

//生成调用WebService方法的SOAP请求信息,并指定SOAP的版本

=newSoapSerializationEnvelope(SoapEnvelope.VER12);

envelope.bodyOut=rpc;

5、调用WebService方法

try{

//调用WebService

transport.call(soapAction,envelope);

}catch(Exceptione){

e.printStackTrace();

}

6、解析WebService中的DataSet数据

SoapObjectsoap1=(SoapObject)object.getProperty("");

SoapObjectchilds=(SoapObject)soap1.getProperty(1);

SoapObjectsoap2=(SoapObject)childs.getProperty(0);

///

for(inti=0;i<soap2.getPropertyCount();i++){

SoapObjectsoap3=(SoapObject)soap2.getProperty(i);

///

Infoinfo=newInfo();

info.setStation(soap3.getProperty(0).toString());

info.setArriveTime(soap3.getProperty(1).toString());

info.setStartTime(soap3.getProperty(2).toString());

info.setKm(soap3.getProperty(3).toString());

Raininfo.add(info);

//result=soap3.getProperty(3).toString();

}

数据格式如下:

‘贰’ 怎么用WebService传输XML文件

WebService中文件传输
WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。
1、 首先编写服务器端上传文件的WebService方法

package com.hoo.service;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import javax.activation.DataHandler;

/**
* <b>function:</b>Axis WebService完成文件上传服务器端
* @author hoojo
* @createDate Dec 18, 2010 1:16:16 PM
* @file UploadFileService.java
* @package com.hoo.service
* @project AxisWebService
* @blog http://blog.csdn.net/IBM_hoojo
* @email [email protected]
* @version 1.0
*/
public class UploadFileService {

/**
* <b>function:</b>传递文件
* @author hoojo
* @createDate Dec 18, 2010 1:27:58 PM
* @param handler DataHandler这个参数必须
* @param fileName 文件名称
* @return upload Info
*/
public String upload(DataHandler handler, String fileName) {
if (fileName != null && !"".equals(fileName)) {
File file = new File(fileName);
if (handler != null) {
InputStream is = null;
FileOutputStream fos = null;
try {
is = handler.getInputStream();
fos = new FileOutputStream(file);
byte[] buff = new byte[1024 * 8];
int len = 0;
while ((len = is.read(buff)) > 0) {
fos.write(buff, 0, len);
}
} catch(FileNotFoundException e) {
return "fileNotFound";
} catch (Exception e) {
return "upload File failure";
} finally {
try {
if (fos != null) {
fos.flush();
fos.close();
}
if (is != null) {
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "file absolute path:" + file.getAbsolutePath();
} else {
return "handler is null";
}
} else {
return "fileName is null";
}
}
}

上传方法和我们以前在Web中上传唯一不同的就是参数一DataHandler,可以将这类看成文件传输器,他可以把文件序列化。然后通过DataHandler可以得到一个输入流InputStream,通过这个流可以读到文件的内容。其他的操作和普通上传类似。
2、 定制wsdd发布文件上传的WebService服务

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="UploadFile" provider="java:RPC">
<parameter name="className" value="com.hoo.service.UploadFileService" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="Session" />
<!-- 和服务器端上传文件的方法签名对应,参数也对应 -->
<operation name="upload" qname="operNS:upload" xmlns:operNS="upload" returnType="rns:string"
xmlns:rns="http://www.w3.org/2001/XMLSchema">
<parameter name="handler" type="ns:DataHandler" xmlns:ns="http://www.w3.org/2001/XMLSchema"/>
<parameter name="fileName" type="ns:string" xmlns:ns="http://www.w3.org/2001/XMLSchema"/>
</operation>
<typeMapping qname="hns:DataHandler" xmlns:hns="ns:FileUploadHandler"
languageSpecificType="java:javax.activation.DataHandler"
serializer="org.apache.axis.encoding.ser." deserializer="org.apache.axis.encoding.ser." encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>
</deployment>

上面才xml节点元素在前面都见过了,说明下operation中的参数,注意要指定参数类型,特别是DataHandler的类型,然后就是typeMapping的serializer、deserializer的序列化和反序列化工厂类的配置。
3、 用dos命令发布当前WebService
C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployUpload.wsdd
发布完成后,可以通过这个地址查看uploadFile这个service了
http://localhost:8080/AxisWebService/servlet/AxisServlet
4、 编写客户端代码

package com.hoo.client;

import java.rmi.RemoteException;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.;
import org.apache.axis.encoding.ser.;

/**
* <b>function:</b>上传文件WebService客户端
*
* @author hoojo
* @createDate Dec 18, 2010 1:38:14 PM
* @file UploadFileClient.java
* @package com.hoo.client
* @project AxisWebService
* @blog http://blog.csdn.net/IBM_hoojo
* @email [email protected]
* @version 1.0
*/
public class UploadFileClient {

public static void main(String[] args) throws ServiceException, RemoteException {
String url = "http://localhost:8080/AxisWebService/services/UploadFile";
String fileName = "readMe.txt";
String path = System.getProperty("user.dir") + "\\WebRoot\\" + fileName;
System.out.println(path);

//这样就相当于构造了一个带文件路径的File了
DataHandler handler = new DataHandler(new FileDataSource(path));

Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);

/**
* 注册异常类信息和序列化类 ns:FileUploadHandler 和 wsdd 配置文件中的typeMapping中的xmlns:hns="ns:FileUploadHandler" 的对应 DataHandler
* 和 wsdd 配置文件中的typeMapping中的qname="hns:DataHandler"的DataHandler对应
*/
QName qn = new QName("ns:FileUploadHandler", "DataHandler");
call.registerTypeMapping(DataHandler.class, qn,
.class,
.class);
call.setOperationName(new QName(url, "upload"));

//设置方法形参,注意的是参数1的type的DataHandler类型的,和上面的qn的类型是一样的
call.addParameter("handler", qn, ParameterMode.IN);
call.addParameter("fileName", XMLType.XSD_STRING, ParameterMode.IN);

//设置返回值类型,下面2种方法都可以
call.setReturnClass(String.class);
//call.setReturnType(XMLType.XSD_STRING);

String result = (String) call.invoke(new Object[] { handler, "remote_server_readMe.txt" });
System.out.println(result);
}
}

至此,文件传输就完成了。怎么样,还不错吧!
如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
原因是jar包版本不统一,解决方法如下:
删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.
具体方法如下:
用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar,然后删除mail,一切就ok了.

‘叁’ webservice和xml作用,和对二者的理解

xml是一种基于标记的数据格式,而webservice是在client和server之间建立通讯,并通过xml进行交互数据,xml是基础,而webservice正式建立在这种基础上的应用

‘肆’ 如何用Jmeter 测试 webservice发送xml文件

首先要打开Jmeter,打开方式跟一般的软件有些区别。可执行程序位于apache-jmeter-3.1-->bin-->jmeter.bat,双击Jmeter.bat即可打开该应用程序

添加线程组。右键测试计划,添加-->Threads(User)-->线程组,所有的操作都会通过这个线程组来进行,包括循环的次数,运行的时间等等。之后测试的webservice接口,结果查看,都要通过线程组

添加WebService测试单元。
我们都是用SOAP协议通过Http来调用它,具体原理:Web service都是放在Web服务器(如IIS)后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。
所以我们要添加soap协议request
右键线程组-->添加-->Sample--> SOAP/XML-RPC Request

添加查看结果选项。右键刚添加的SOAP/XML-RPC Request,添加监听器,点击图形结果和用表格查看结果,也可以加入其它结果

设置SOAP/XML-RPC Request,填写WebService的地址,SOAPAtion地址以及数据格式,webservice暴露了哪些接口,接口都需要传入哪些参数,在数据格式中都有体现,你只需要去替换参数,传个服务器就可以了

设置完之后,可以点击运行按钮,测试一下,点击添加的结果模块查看结果是否成功

7
测试成功之后,设置线程组的线程数和循环条件进行压力测试

‘伍’ webservice的web.xml怎么配置

你好,使用SAP
BO提供的WebService时,可能会出现不可使用的情况,这时我们可以先测试一下WebService的链接是否可用。打开链接路径下services/Session进行WebService的测试,如果出现:"Please
enable REST support in WEB-INF/conf/axis2.xml and
WEB-INF/web.xml",说明WebService配置中REST开关未打开。配置切换方式如下:
1.进入服务器的BO服务端安装路径
2.找到如下文件:"\TomcatXX\webapps\dswsbobje\WEB-INF\conf\axis2.xml"(其中XX为tomcat的版本号,BO3.1的是55,BO4.0以上的都是6)
3.打开上述文件,找到true那一行:
把标记出的true改成false,保存。
4.重启Tomcat服务,打开之前所述链接,出现Session信息,配置修改完成。

‘陆’ QT 中向webservice发送xml数据请求

服务端向客户端传数据不会做了!这样 你是给他提供接口,他传入参数给你 你通过这些参数 在后台取得应该返回的东西 返回给他,比如 接口为
public String getUserID(String name);//这里的参数也许是个XML,那么你就需要解析这个XML,
通过name 查询数据库 返回userID;
return userID;