java 调用webservice(xml格式交换)工具类
来源:互联网 发布:安卓优化软件 编辑:程序博客网 时间:2024/06/16 02:40
今天在公司开发一个webservice相关的项目使用RPC调用时候,由于报文返回过大,出现了内存溢出的情况。这里可以使用axis访问webservice,这里是我封装的工具类。
package com.handkoo.utils; import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;/** * 调用webservice(xml)工具类 * * @author cp * */public class MyWebServiceUtils {/** * 封装的访问webservice的工具类:(有局限性,数据量小的xml报文可用,较大则会出现stackoverflow的异常) * * @param reqXML * 请求的xml * @param endPoint * webservice的路径除去?wsdl:例如:http://1.202.235.66:7002/webService/PartsService(没有?wsdl) * @param namespace * 名称空间 * @param method * 方法名称 * @return返回报文结果(xml) */public static String loadWebService(String reqXML, String endPoint, String namespace, String method) {String responseXml = "";RPCServiceClient serviceClient = null;try {/* 调用理赔系统的接口 */String nameSpace = namespace;QName qname = new QName(nameSpace, method);serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();EndpointReference targetEPR = new EndpointReference(endPoint);options.setTo(targetEPR);options.setTimeOutInMilliSeconds(30000);Object[] rtnObjs = serviceClient.invokeBlocking(qname, new Object[] { reqXML },new Class[] { String.class });responseXml = rtnObjs[0].toString();} catch (Exception e) {e.toString();}return responseXml;}/** * axis方式访问webservice * * @param reqXML * 请求的xml的报文 * @param endPoint * webservice的wsdl地址,例如:http://1.202.235.66:7002/webService/PartsService?wsdl * @param namespace * 调用方法的命名空间 * @param method * 调用的方法名 * @return 返回调用的报文(xml) * */public static String invokRemoveWSDLByAxis(String reqXML, String endPoint, String namespace, String method) {String responseXML = "";Service service = new Service();try {Call call = (Call) service.createCall();call.setTargetEndpointAddress(endPoint);call.setOperationName(method);call.setOperationName(new javax.xml.namespace.QName(namespace, method));call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_STRING); responseXML = (String) call.invoke(new Object[] { reqXML });} catch (Exception e) {e.printStackTrace();}return responseXML;} }
神奇的事情是,我使用第二种方式调用,内存溢出的情况就有效避免了!
0 0
- java 调用webservice(xml格式交换)工具类
- Android 调用webService+回调接口+线程池工具类封装(支持json格式接口和xml格式接口)
- flex调用webservice返回xml格式字符串,并遍历
- (A4,二)java数据交换格式---Xml详解
- 【webservice】Java调用WebService
- webservices数据交换-xml格式
- java读取XML文件通用工具类(递归调用)
- 动态调用WebService的工具类
- c#调用JAVA提供的WebService处理日期格式
- 使用Java客户端类调用c# WebService和xml rpc server
- 使用Java客户端类调用c# WebService和xml rpc server
- 使用Java客户端类调用c# WebService和xml rpc server
- java 调用 webService Xfire接口,xml解析为object
- Java,AXIS,webService 调用 完整实例 xml 入参出参
- ios调用webservice时,获取返回的XML格式的结果
- 调用webservice,解析返回数据为xml格式的字符串,进行数据绑定
- jQuery 调用WebService - 》 各种格式的调用
- xliff XML本地化数据交换格式
- 同步和异步例子(linux)
- JavaScript的引入及词法结构
- follow集计算
- 子容器居中, 父子容器宽高不定
- Kanzi学习之路(1):Kanzi的简介和安装
- java 调用webservice(xml格式交换)工具类
- 存储管理
- 【C#】数组
- 说说Android中的touch mode
- struct和typedef struct彻底明白了
- Oracle数据库之基本查询
- Maven 中央仓库
- 结对测试工具PICT用户手册(5)——输出格式
- 解题报告:Two Sum