文件下载Web服务Android客户端
我已经编写了一个接受soap请求的axis2 web服务 Web服务部件: 带有datahandler的普通java客户机工作正常。不过,我想编写一个android客户端来检索数据。我知道android没有javax.activation.DataHandler实现。在Axis2中,我尝试使服务器能够接收http请求,以充当restful服务 services.xml配置 最后我收到了一些数据,但它们与实际数据不一致。我在哪方面犯了错误文件下载Web服务Android客户端,android,web-services,axis2,Android,Web Services,Axis2,我已经编写了一个接受soap请求的axis2 web服务 Web服务部件: 带有datahandler的普通java客户机工作正常。不过,我想编写一个android客户端来检索数据。我知道android没有javax.activation.DataHandler实现。在Axis2中,我尝试使服务器能够接收http请求,以充当restful服务 services.xml配置 最后我收到了一些数据,但它们与实际数据不一致。我在哪方面犯了错误 public DataHandler getFile(S
public DataHandler getFile(String fileName)
{
FileDataSource dataSource = new FileDataSource(writePath + "/" + fileName);
DataHandler fileDataHandler = new DataHandler(dataSource);
return fileDataHandler;
}
<service name="WsFileTransfer">
<description>
Please Type your service description here
</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
<parameter name="ServiceClass" locked="false">com.company.project.web.service.WsFileTransfer
</parameter>
<operation name="getFile">
<parameter name="RESTMethod">GET</parameter>
<parameter name="RESTLocation">getFile/{fileName}</parameter>
</operation>
private void getFile(String fileName) throws JSONException, FileNotFoundException {
client.getParams().setParameter(ClientPNames.COOKIE_POLICY,
CookiePolicy.RFC_2109);
StringEntity tmp = null;
httpGet = new HttpGet(EPR + "getFile?fileName=" + fileName);
httpGet.setHeader("Content-Type", CONTENT_TYPE);
FileOutputStream stream = null;
InputStream readStream = null;
try {
response = client.execute(httpGet);
HttpEntity returnEntity = response.getEntity();
readStream = returnEntity.getContent();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String filePath = Environment.getExternalStorageDirectory().getPath()
+ System.getProperty("file.separator") + fileName;
File file = new File(filePath);
stream = new FileOutputStream(file);
try {
while(readStream.read() >= 0){
stream.write(readStream.read());
}
} catch (IOException e) {
e.printStackTrace();
}
finally{
if(stream != null)
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
if(readStream != null){
try {
readStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}