2013-03-12 117 views
1

我尝试开发从服务器发送文件到客户端的Web服务。我使用Apache CXF开发Web Serivce。应用程序是基于Spring的。首先,我试着写简单的测试代码:使用Apache CXF通过Web服务下载文件

的applicationContext.xml

<import resource="classpath:META-INF/cxf/cxf.xml"/> 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> 

<bean class="com.llth.paymentgateway.webservice.PaymentGatewayReportingWebServiceImpl" id="paymentGatewayReportingWebService"/> 

<jaxws:endpoint id="reportingWebService" implementor="#paymentGatewayReportingWebService" address="/ReportingWebService"> 
    <jaxws:properties> 
     <entry key="mtom-enabled" value="true"/> 
    </jaxws:properties> 
</jaxws:endpoint> 

PaymentGatewayReportingWebService.java Web服务inteface

@WebService 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public interface PaymentGatewayReportingWebService { 

    @WebMethod(operationName = "downloadFile") 
    public DataHandler downloadFile(String fileName); 

} 

PaymentGatewayReportingWebServiceImpl.java实施PaymentGatewayReportingWebService的inteface

@WebService(endpointInterface = "com.llth.paymentgateway.webservice.PaymentGatewayReportingWebService") 
public class PaymentGatewayReportingWebServiceImpl implements PaymentGatewayReportingWebService { 

    @Override 
    @XmlMimeType("application/octet-stream") 
    public DataHandler downloadFile(String fileName) { 
     FileDataSource dataSource = new FileDataSource(fileName); 

     return new DataHandler(dataSource); 
    } 
} 

当我即时通讯端口和执行Web服务方法通过的soapUI我recevie以下响应(从RAW选项卡复制)

HTTP/1.1 200 OK 
Server: Apache-Coyote/1.1 
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:9f003136-a7e0-4634-8032-51c1ba701776"; start="<[email protected]>"; start-info="text/xml";charset=UTF-8 
Transfer-Encoding: chunked 
Date: Tue, 12 Mar 2013 12:35:06 GMT 


--uuid:9f003136-a7e0-4634-8032-51c1ba701776 
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"; 
Content-Transfer-Encoding: binary 
Content-ID: <[email protected]> 

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:downloadFileResponse xmlns:ns1="http://webservice.paymentgateway.llth.com/"><return><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:[email protected]"/></return></ns1:downloadFileResponse></soap:Body></soap:Envelope> 
--uuid:9f003136-a7e0-4634-8032-51c1ba701776 
Content-Type: application/octet-stream 
Content-Transfer-Encoding: binary 
Content-ID: <[email protected]> 

яШяб'«Exif 
and some binary data here 

的soapUI不下载任何东西。我不知道一切是否正确。如果soapUI开始下载文件?如果soapUI应该下载文件,那么有些地方是错误的。如果是,那有什么问题?

回答

1

其实soapUI给你正确的答案。 “这里有一些二进制数据”是你要求的文件