最近boss要求做android客户端的图片上传和下载,就是调用服务器的webservice接口,实现从android上传图片到服务器,然后从服务器下载图片到android客户端。
需求下来了,开始动脑筋了呗。
通常,我们调用webservice,就是服务器和客户端(浏览器,android手机端等)之间的通信,其通信一般是传 xml或json格式的字符串。对,就只能是字符串。
我的思路是这样的,从android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数传到服务器端,服务端解码该字符串,最后保存到相应的路径下。整个上传过程的关键就是 以 字节流的字符串 进行数据传递。下载过程,与上传过程相反,把服务器端和客户端的代码相应的调换。
不罗嗦那么多,上代码。流程是:把android的sdcard上某张图片 上传到 服务器下images 文件夹下。
注:这只是个demo,没有UI界面,文件路径和文件名都已经写死,运行时,相应改一下就行。
1 。读取android sdcard上的图片。
public void testUpload(){
try{
String srcUrl = "/sdcard/"; //路径
String fileName = "aa.jpg"; //文件名
FileInputStream fis = new FileInputStream(srcUrl + fileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while((count = fis.read(buffer)) >= 0){
baos.write(buffer, 0, count);
}
String uploadBuffer = new String(Base64.encode(baos.toByteArray())); //进行Base64编码
String methodName = "uploadImage";
connectWebService(methodName,fileName, uploadBuffer); //调用webservice
Log.i("connectWebService", "start");
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
connectWebService()方法:
//使用 ksoap2 调用webservice
private boolean connectWebService(String methodName,String fileName, String imageBuffer) {
String namespace = "http://134.192.44.105:8080/SSH2/service/IService"; // 命名空间,即服务器端得接口,注:后缀没加 .wsdl,
//服务器端我是用x-fire实现webservice接口的
String url = "http://134.192.44.105:8080/SSH2/service/IService"; //对应的url
//以下就是 调用过程了,不明白的话 请看相关webservice文档
SoapObject soapObject = new SoapObject(namespace, methodName);
soapObject.addProperty("filename", fileName); //参数1 图片名
soapObject.addProperty("image", imageBuffer); //参数2 图片字符串
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER10);
envelope.dotNet = false;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE httpTranstation = new HttpTransportSE(url);
try {
httpTranstation.call(namespace, envelope);
Object result = envelope.getResponse();
Log.i("connectWebService", result.toString());
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
2。 服务器端的webservice代码 :
public String uploadImage(String filename, String image) {
FileOutputStream fos = null;
try{
String toDir = "C:\\Program Files\\Tomcat 6.0\\webapps\\SSH2\\images"; //存储路径
byte[] buffer = new BASE64Decoder().decodeBuffer(image); //对android传过来的图片字符串进行解码
File destDir = new File(toDir);
if(!destDir.exists()) destDir.mkdir();
fos = new FileOutputStream(new File(destDir,filename)); //保存图片
fos.write(buffer);
fos.flush();
fos.close();
return "上传图片成功!" + "图片路径为:" + toDir;
}catch (Exception e){
e.printStackTrace();
}
return "上传图片失败!";
}
对android 端进行 单元测试调用testUpload()方法,如果你看到绿条的话,说明调用成功!在服务器下,就可以看到你上传的图片了。。。。
当然,这个demo很简陋,没有漂亮UI什么的,但是这是 android端调用webservice进行上传图片的过程。从服务器下载到android端,道理亦然。欢迎大家交流学习。。。。
相关推荐
在Android客户端调用Web Service上传图片到服务器的过程中,主要涉及以下几个关键知识点: 1. **文件I/O操作**:客户端首先需要从SD卡或其他存储位置读取图片文件。这里使用`FileInputStream`读取图片文件,然后...
在Android开发中,调用Web服务来保存图片是一项常见的任务,尤其在移动应用中,用户经常需要上传拍摄或选择的照片到服务器。在这个过程中,我们需要理解Android的相机操作、图像处理和与Web服务交互的原理。以下是...
本示例将重点讲解如何在Android应用中实现图片上传到基于`.NET`构建的SOAP WebService。 首先,理解SOAP(Simple Object Access Protocol)协议,它是一种基于XML的协议,用于在Web上交换结构化的、类型化的信息。...
Android编程中的网络数据上传及WebService调用集,这里面一共包括了5个例子,分别是: AndroidInteractWithWebService 通过网络WebService查询手机号码归属地的小示例 ServerForGETMethod 一些获取数据方法的...
本文将详细介绍如何使用ksoap库在Android中调用webservice服务,实现批量上传图片。 ksoap是一个用于Android平台的开源库,它使得Android应用能够通过SOAP协议与Web服务进行通信。SOAP(Simple Object Access ...
三、Android调用WebService 1. 添加网络权限:在AndroidManifest.xml中添加INTERNET权限。 ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 2. 使用HttpURLConnection或OkHttp库发起...
本教程将详细介绍如何在Android应用中利用Web Service(通常为SOAP协议)来实现图片上传功能。 首先,理解Web Service是关键。Web Service是一种基于互联网的、平台独立的交互方式,允许不同系统间交换数据。SOAP...
在这个场景中,我们将使用`KSOAP2`库来调用`webservice`,实现从Android设备上传图片到服务器的功能。以下是关于这个主题的详细解释。 ### 1. `KSOAP2`简介 `KSOAP2`是Android平台上一个轻量级的、用于调用SOAP...
这里我们讨论的是如何使用Android客户端通过C#编写的WebService接口,实现JSON数据的上传,以完成用户登录和注册操作。下面将详细阐述这一过程的关键步骤和技术要点。 1. **理解WebService**: WebService是一种...
在这个Android项目中,XFire被用作网络通信的工具,实现图片的上传和下载功能。以下将详细解析这个项目中的关键知识点: 1. **网络请求与权限管理**:在Android中进行网络操作需要在`AndroidManifest.xml`文件中...
至此,Android通过Ksoap2连接WebService上传图片的主要步骤已完成。如果所有步骤均正确执行,那么图片上传功能应该可以正常工作。当然,实际应用中可能需要进一步完善错误处理、进度显示等辅助功能。 至于下载功能...
在Android应用开发中,有时我们需要实现从客户端向服务器发送数据,比如上传图片。在这个场景下,`ksoap2`库是一个常用的工具,它允许我们与Web服务进行交互,包括那些基于`ASP.NET`构建的Web服务。本篇将详细介绍...
总之,通过`Ksoap2`,Android应用可以方便地与基于`SOAP`的`WebService`进行交互,实现图片上传功能。这只是一个基本示例,具体实现可能需要根据你的`WebService`接口和需求进行调整。在实际项目中,可能还需要结合...
三、Android调用WebService 1. SOAP协议:如果你的WebService使用SOAP协议,你需要创建SOAP请求对象,包含XML格式的SOAPHeader和SOAPBody,然后使用`HttpTransportSE`类发送请求。 2. RESTful API:如果WebService...
本主题聚焦于如何利用Android平台与ASP.NET Web服务(Web Service)进行交互,实现图片上传功能。以下是对这个过程的详细解释: 1. **Android端的图片选择与处理**: - 使用Android的`Intent`机制,可以调用系统...
在Android应用程序开发中,有时我们需要将用户拍摄或选择的多张图片上传到远程服务器,以便进行存储、处理或分享。本文将详细介绍如何通过Web Service实现这一功能。Web Service是一种基于HTTP协议的接口,允许不同...
在Android开发中,与Web服务交互是常见的需求,特别是通过WebService接口来获取或发送数据。本示例将探讨如何在Android应用中使用POST方法请求WebService,同时也会提及一个已包含的Web项目,便于快速部署和运行代码...
2、android上传照片客户端实例,为一个thread,在需要的地方直接实例化并start即可使用,并附有实现所需ksoap插件。本客户端在上述webservice服务端可对应调用接口,可直接调用。(已多次测试)
本项目基于Eclipse IDE,实现了Android手机程序对Web Service的调用,具体包括拍照功能、图片上传以及XML处理和base64编码解码技术。 1. **Android拍照功能**: 在Android平台上,我们可以使用`Camera`类来实现...