xfire webservice返回xml
来源:互联网 发布:c语言bool flag 编辑:程序博客网 时间:2024/05/21 22:59
接口中本来是这么写的:
但是真正的业务中,数据量特别大,得有几十万条记录。这样的话, 把dom4j的document转成xml 就会有问题了。 String根本放不下那么长的数据。
Document document = DocumentHelper.createDocument(); Element rootElmt = document.addElement("公共档案","http://xxx/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema"); rootElmt.addNamespace("行政事业单位", "http://xxx/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema"); rootElmt.addNamespace("xsi", "http://xxx/2001/XMLSchema-instance"); rootElmt.addAttribute("xsi:schemaLocation", "http://xxx/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema 公共档案.xsd"); Element accttypeElement = rootElmt.addElement("电子账簿"); accttypeElement.addElement("电子账簿编号").setText(accsystypecode); accttypeElement.addElement("电子账簿名称").setText(accsystypespec); accttypeElement.addElement("会计核算单位").setText(hsagencyMap.get("name")+""); accttypeElement.addElement("组织机构代码").setText(hsagencyMap.get("orgcode")+"");xml = document.asXML();。。。。//封装自定义值报文结构 for (int i = 0; i < CustomValues.size(); i++) { 。。。。 valueElement.addElement("档案值名称").setText(valueMap.get("name")+""); valueElement.addElement("档案值描述").setText(valueMap.get("name")+""); 。。。。。 valueElement.addElement("档案值级次").setText(valueMap.get("levelno")+""); }return xml;
解决:
把xml转成字字节流,然后再把字节流转成base64的格式。
然后再放到Stringbuffer里面。返回去。
ByteArrayInputStream byteinput = new ByteArrayInputStream(document.asXML().getBytes()); StringBuffer buffer = new StringBuffer(); byte[] buff = new byte[1024 * 1024]; int len = 0; while (-1 != (len = byteinput.read(buff, 0, 1024))) { buffer.append(Base64.encode(buff, 0, len)); } try { byteinput.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } xml = buffer.toString(); } return xml;
客户端:解析byte,并生成文件
package gov.mof.fasp.ifmis.acal.common.service;import java.io.File;import java.io.FileOutputStream;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import javax.xml.rpc.encoding.XMLType;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.codehaus.xfire.util.Base64;public class ExpXmlTest { public static String axisToAsset() throws Exception { String serviceUrl = "http://localhost:7001//services/ExpXmlService"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTimeout(new Integer("10000")); //设置超时 call.setTargetEndpointAddress(new URL(serviceUrl)); String targetNamespace = "http://service.common.acal.ifmis.fasp.mof.gov"; QName qName = new QName(targetNamespace, "expXml"); call.setOperationName(qName); String message = null; try { String flag = "1"; String acctsystypecode = "XZ_M"; String hsagency = "2"; String startterm = "10"; String endterm = "10"; String acctyear="2017"; call.addParameter(new QName(targetNamespace, "flag"),XMLType.XSD_STRING,ParameterMode.IN); call.addParameter(new QName(targetNamespace, "acctsystypecode"),XMLType.XSD_STRING,ParameterMode.IN); call.addParameter(new QName(targetNamespace, "hsagency"),XMLType.XSD_STRING,ParameterMode.IN); call.addParameter(new QName(targetNamespace, "startterm"),XMLType.XSD_STRING,ParameterMode.IN); call.addParameter(new QName(targetNamespace, "endterm"),XMLType.XSD_STRING,ParameterMode.IN); call.addParameter(new QName(targetNamespace, "acctyear"),XMLType.XSD_STRING,ParameterMode.IN); // call.setReturnType(XMLType.XSD_STRING); Object[] obj = {flag,acctsystypecode, hsagency, startterm,endterm,acctyear}; try { String ret = (String) call.invoke(obj); System.out.println("Get result :" + ret); String fileName = "java6webservice.xml"; File file = new File(fileName); byte[] bytes = Base64.decode(ret); System.out.println(bytes.length); file.createNewFile(); FileOutputStream out = new FileOutputStream(file); out.write(bytes); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return message; } public static void main(String[] args) throws Exception { axisToAsset(); }}
阅读全文
0 0
- xfire webservice返回xml
- Xfire webService 返回复杂类型
- xFire开发webService返回复杂对象
- xFire开发webService返回复杂对象
- xFire开发webService返回复杂对象
- webservice 返回自定义xml
- xfire webservice
- Xfire WebService
- webservice----xfire
- webservice(XFire)
- xfire webservice
- 如何使用xFire开发webService返回复杂对象List
- 如何使用xFire开发webService返回复杂对象List
- xfire webService返回Map<String,List<E>>嵌套复杂类型
- WebService返回DataSet,Xml,Json
- java 调用 webService Xfire接口,xml解析为object
- xfire:xFire WebService学习笔记
- xfire webservice 实例
- 系统之家(win7系统比较好用)
- LeetCode-- Partition List
- Filter与Servlet的区别和联系
- JAVA中常用IO流类:FileInputStream和FileOutputStream
- Android 开发中,进入软件后判断网络状态
- xfire webservice返回xml
- iOS11.0后APP的图标和启动图
- 一步一步教你VMWare安装苹果Mac OS X
- 为什么很少见程序员炫富?
- minSdk(API 26) > deviceSdk(API 17)
- ubuntu 安装 Qt4.8.6
- MA5889|MA5889一级代理|USB智能识别方案|中文设计方案|现货
- 9 月份 GitHub 上最火的 JavaScript 开源项目!
- 趣图:普通人的煎蛋 vs 程序员的煎蛋