最近boss要求做android客户端的图片上传和下载,就是调用服务器的webservice接口,实现从android上传图片到服务器,然后从服务器下载图片到android客户端。
需求下来了,开始动脑筋了呗。
通常,我们调用webservice,就是服务器和客户端(浏览器,android手机端等)之间的通信,其通信一般是传 xml或json格式的字符串。对,就只能是字符串。
我的思路是这样的,从android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数传到服务器端,服务端解码
该字符串,最后保存到相应的路径下。整个上传过程的关键就是 以 字节流的字符串 进行数据传递。下载过程,与上传过程相反,把服务器端和客户端的代码相应的调
换。
不罗嗦那么多,上代码。流程是:把android的sdcard上某张图片 上传到 服务器下images 文件夹下。注:这只是个demo,没有UI界面,文件路径和文件名都已经写死,运行时,相应改一下就行。
1 。读取android sdcard上的图片。
-
publicvoidtestUpload(){
-
try{
-
StringsrcUrl="/sdcard/";
-
StringfileName="aa.jpg";
-
FileInputStreamfis=newFileInputStream(srcUrl+fileName);
-
ByteArrayOutputStreambaos=newByteArrayOutputStream();
-
byte[]buffer=newbyte[1024];
-
intcount=0;
-
while((count=fis.read(buffer))>=0){
-
baos.write(buffer,0,count);
-
}
-
-
StringuploadBuffer=newString(Base64.encode(baos.toByteArray()));
-
StringmethodName="uploadImage";
-
connectWebService(methodName,fileName,uploadBuffer);
-
Log.i("connectWebService","start");
-
-
fis.close();
-
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
}
connectWebService()方法:
-
<preclass="java"name="code">//使用ksoap2调用webservice
-
privatebooleanconnectWebService(StringmethodName,StringfileName,StringimageBuffer){
-
Stringnamespace="http://134.192.44.105:8080/SSH2/service/IService";//命名空间,即服务器端得接口,注:后缀没加.wsdl,
-
//服务器端我是用x-fire实现webservice接口的
-
Stringurl="http://134.192.44.105:8080/SSH2/service/IService";//对应的url
-
-
//以下就是调用过程了,不明白的话请看相关webservice文档
-
SoapObjectsoapObject=newSoapObject(namespace,methodName);
-
soapObject.addProperty("filename",fileName);//参数1图片名
-
soapObject.addProperty("image",imageBuffer);//参数2图片字符串
-
SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(
-
SoapEnvelope.VER10);
-
envelope.dotNet=false;
-
envelope.setOutputSoapObject(soapObject);
-
HttpTransportSEhttpTranstation=newHttpTransportSE(url);
-
try{
-
httpTranstation.call(namespace,envelope);
-
Objectresult=envelope.getResponse();
-
Log.i("connectWebService",result.toString());
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
-
returnfalse;
-
}
2。 服务器端的webservice代码 :
-
publicStringuploadImage(Stringfilename,Stringimage){
-
FileOutputStreamfos=null;
-
try{
-
StringtoDir="C:\\ProgramFiles\\Tomcat6.0\\webapps\\SSH2\\images";
-
-
byte[]buffer=newBASE64Decoder().decodeBuffer(image);
-
FiledestDir=newFile(toDir);
-
if(!destDir.exists())destDir.mkdir();
-
fos=newFileOutputStream(newFile(destDir,filename));
-
fos.write(buffer);
-
fos.flush();
-
fos.close();
-
return"上传图片成功!"+"图片路径为:"+toDir;
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
return"上传图片失败!";
-
}
对android 端进行 单元测试调用testUpload()方法,如果你看到绿条的话,说明调用成功!在服务器下,就可以看到你上传的图片了。。。。
当然,这个demo很简陋,没有漂亮UI什么的,但是这是 android端调用webservice进行上传图片的过程。从服务器下载到android端,道理亦然。欢迎大家交流学习。。。。
最近boss要求做android客户端的图片上传和下载,就是调用服务器的webservice接口,实现从android上传图片到服务器,然后从服务器下载图片到android客户端。
需求下来了,开始动脑筋了呗。
通常,我们调用webservice,就是服务器和客户端(浏览器,android手机端等)之间的通信,其通信一般是传 xml或json格式的字符串。对,就只能是字符串。
我的思路是这样的,从android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数传到服务器端,服务端解码
该字符串,最后保存到相应的路径下。整个上传过程的关键就是 以 字节流的字符串 进行数据传递。下载过程,与上传过程相反,把服务器端和客户端的代码相应的调
换。
不罗嗦那么多,上代码。流程是:把android的sdcard上某张图片 上传到 服务器下images 文件夹下。注:这只是个demo,没有UI界面,文件路径和文件名都已经写死,运行时,相应改一下就行。
1 。读取android sdcard上的图片。
-
publicvoidtestUpload(){
-
try{
-
StringsrcUrl="/sdcard/";
-
StringfileName="aa.jpg";
-
FileInputStreamfis=newFileInputStream(srcUrl+fileName);
-
ByteArrayOutputStreambaos=newByteArrayOutputStream();
-
byte[]buffer=newbyte[1024];
-
intcount=0;
-
while((count=fis.read(buffer))>=0){
-
baos.write(buffer,0,count);
-
}
-
-
StringuploadBuffer=newString(Base64.encode(baos.toByteArray()));
-
StringmethodName="uploadImage";
-
connectWebService(methodName,fileName,uploadBuffer);
-
Log.i("connectWebService","start");
-
-
fis.close();
-
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
}
connectWebService()方法:
-
<preclass="java"name="code">//使用ksoap2调用webservice
-
privatebooleanconnectWebService(StringmethodName,StringfileName,StringimageBuffer){
-
Stringnamespace="http://134.192.44.105:8080/SSH2/service/IService";//命名空间,即服务器端得接口,注:后缀没加.wsdl,
-
//服务器端我是用x-fire实现webservice接口的
-
Stringurl="http://134.192.44.105:8080/SSH2/service/IService";//对应的url
-
-
//以下就是调用过程了,不明白的话请看相关webservice文档
-
SoapObjectsoapObject=newSoapObject(namespace,methodName);
-
soapObject.addProperty("filename",fileName);//参数1图片名
-
soapObject.addProperty("image",imageBuffer);//参数2图片字符串
-
SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(
-
SoapEnvelope.VER10);
-
envelope.dotNet=false;
-
envelope.setOutputSoapObject(soapObject);
-
HttpTransportSEhttpTranstation=newHttpTransportSE(url);
-
try{
-
httpTranstation.call(namespace,envelope);
-
Objectresult=envelope.getResponse();
-
Log.i("connectWebService",result.toString());
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
-
returnfalse;
-
}
2。 服务器端的webservice代码 :
-
publicStringuploadImage(Stringfilename,Stringimage){
-
FileOutputStreamfos=null;
-
try{
-
StringtoDir="C:\\ProgramFiles\\Tomcat6.0\\webapps\\SSH2\\images";
-
-
byte[]buffer=newBASE64Decoder().decodeBuffer(image);
-
FiledestDir=newFile(toDir);
-
if(!destDir.exists())destDir.mkdir();
-
fos=newFileOutputStream(newFile(destDir,filename));
-
fos.write(buffer);
-
fos.flush();
-
fos.close();
-
return"上传图片成功!"+"图片路径为:"+toDir;
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
return"上传图片失败!";
-
}
对android 端进行 单元测试调用testUpload()方法,如果你看到绿条的话,说明调用成功!在服务器下,就可以看到你上传的图片了。。。。
当然,这个demo很简陋,没有漂亮UI什么的,但是这是 android端调用webservice进行上传图片的过程。从服务器下载到android端,道理亦然。欢迎大家交流学习。。。。
分享到:
相关推荐
从Android端用io流读取到要上传的图片,用Base64编码成字节流的字符串,通过调用webservice把该字符串作为参数传到服务器端,服务端解码该字符串,最后保存到相应的路径下。整个上传过程的关键就是 以 字节流的字符...
只是android上传图片到.net webservice的demo,东拼西凑,总算可以了,以备不时之需
Android编程中的网络数据上传及WebService调用集,这里面一共包括了5个例子,分别是: AndroidInteractWithWebService 通过网络WebService查询手机号码归属地的小示例 ServerForGETMethod 一些获取数据方法的...
Android ksoap调用webservice批量上传多张图片详解 这几天一直在开发app,哎呀,什么都是第一接触,想想自己自学Java,然后自学Android,一直没有放弃,曾想放弃的,但是想到爸妈供我上学,不能在宿舍里面玩游戏,...
2、android上传照片客户端实例,为一个thread,在需要的地方直接实例化并start即可使用,并附有实现所需ksoap插件。本客户端在上述webservice服务端可对应调用接口,可直接调用。(已多次测试)
android端上传下载文件(需要下载服务器源代码),调用webservice查询手机号码归属地
android中调用webservice的方法传递参数时,将对象的数据(图片,声音等)编码成Base64,上传,下载等。
经典实例,文件的上传下载,Adnroid调用webservice,图片浏览器,手机联系人管理等,适合初学者知识积累
黑马程序员_8天快速掌握Android视频 总共67个视频教程,包括:02_搭建Android开发环境,03_创建与启动手机模拟器和学习使用ANDROID...HTTP协议实现文件上传,29_发送xml数据和调用webservice,30_多线程下载原理。。。
第五天 1> 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2> 网络--通过HTTP协议实现多线程断点续传下载 3> 为应用添加新的Activity与参数传递 4> 意图 第六天 1> Activity的生命周期 ...
黑马程序员_8天快速掌握Android视频 总共67个视频教程,包括:02_搭建Android开发环境,03_创建与启动手机模拟器和学习使用ANDROID...HTTP协议实现文件上传,29_发送xml数据和调用webservice,30_多线程下载原理。。。
android开发的一套数据采集系统 调用远程webservice,上传数据,拍摄图片到服务器,本地sqlite存储服务器数据...
第五天 1> 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2> 网络--通过HTTP协议实现多线程断点续传下载 3> 为应用添加新的Activity与参数传递 4> 意图 第六天 1> Activity的生命周期 2> ...
WebService调用库ksoap2 XML解析XStream 动画开源库nineoldandroids 表单验证库android-validation-komensky 更多优秀开源库等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持...
29_发送xml数据和调用webservice.avi 所在项目:mobileAddressQuery & Web端应用:web 30_多线程下载原理.avi 所在项目:net 31_多线程断点下载器.avi 所在项目:MulThreadDownloader 32_文件断点上传器.avi 所在...
WebService调用库ksoap2 XML解析XStream 动画开源库nineoldandroids 表单验证库android-validation-komensky 更多优秀开源库等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,...
29_发送xml数据和调用webservice.avi 所在项目:mobileAddressQuery & Web端应用:web 30_多线程下载原理.avi 所在项目:net 31_多线程断点下载器.avi 所在项目:MulThreadDownloader 32_文件断点上传器.avi 所在...
WebService调用库ksoap2 XML解析XStream 动画开源库nineoldandroids 表单验证库android-validation-komensky 更多优秀开源库等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持...