Axis 实现的SOAP附件的传输
主要是将附件封装在请求头中,这样子客户端只要从请求头中下载下来即可。
package com.test.soap.hello; import java.io.File; import java.net.URL; import javax.activation.DataHandler; 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.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory; import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory; public class AxisFileTest { public static void main(String[] args) throws Exception { Service service = new Service(); Call call = (Call) service.createCall(); URL myUrl = new URL("http://192.168.1.164:1938"); call.setTargetEndpointAddress(myUrl); call.setOperationName(new QName("urn:MyAttachServer", "echoDir")); QName qnameAttachment = new QName("urn:MyAttachServer", "DataHandler"); call.registerTypeMapping(DataHandler.class, qnameAttachment, JAFDataHandlerSerializerFactory.class, JAFDataHandlerDeserializerFactory.class); call.addParameter("source", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.SOAP_ARRAY); DataHandler[] ret = (DataHandler[]) call.invoke(new Object[]{null}); for(int i = 0; i < ret.length; ++i){ DataHandler recDH = ret[i]; File receivedFile = new File(recDH.getName()); System.out.println( i + ": " + receivedFile.getName() + "|length: " + receivedFile.length()); } } }
欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。