一服务器端C#
这里有三个上传方法
1.uploadFile( byte []bs, String fileName);
PC机操作是没有问题
2. uploadImage(String filename,String image);
//android大于1M上传会出问题(内存溢出),把文件件转换为Base64字符串上传
3. uploadResume(String filename,
String image, int tag); //android可以传大文件

using System;
using
System.Collections.Generic;
using System.Web;
using
System.Web.Services;
using System.IO;
///
/// Summary description for
service1
///
[WebService(Namespace = "http://myserver1.cn/")]
[WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from
script, using ASP.NET AJAX, uncomment the following line.
//
[System.Web.Script.Services.ScriptService]
public class service1 :
System.Web.Services.WebService {
public service1 () {
//Uncomment the
following line if using designed
components
//InitializeComponent();
}
[WebMethod]
public string
HelloWorld(string str1) {
return str1+"成功";
}
[WebMethod]
public int
Add(int a, int b)
{
return a + b;
}
[WebMethod]
public int
uploadFile( byte []bs, String fileName){

FileStream out1 =null;
try
{
String
path=String.Format("{0:yyyyMMdd_hhmmss}_{1}",DateTime.Now,fileName);
String
newFile = HttpContext.Current.Server.MapPath("upload/"+path); //
上传文件存放路径
out1 = new FileStream(newFile, FileMode.CreateNew,
FileAccess.Write);
try {
out1.Write(bs,0,bs.Length);
} catch
(IOException e) {
// TODO Auto-generated catch block
;
}
} catch
(FileNotFoundException e) {
// TODO Auto-generated catch block

return
- 1 ;
} finally {
if (out1 != null ) {
try {
out1.Close();
}
catch (IOException e) {
// TODO Auto-generated catch
block

}
}
}
return 0 ;
}
[WebMethod]
//android大于1M上传会出问题(内存溢出)
public int uploadImage(String filename,String
image){

FileStream out1 =null;
byte
[]bs=Convert.FromBase64String(image);
try {
String
path=String.Format("{0:yyyyMMdd_hhmmss}_{1}",DateTime.Now,filename);
String
newFile = HttpContext.Current.Server.MapPath("upload/"+path); //
上传文件存放路径
out1 = new FileStream(newFile, FileMode.CreateNew,
FileAccess.Write);
try {
out1.Write(bs,0,bs.Length);
} catch
(IOException e) {
// TODO Auto-generated catch block
;
}
} catch
(FileNotFoundException e) {
// TODO Auto-generated catch block

return
- 1 ;
} finally {
if (out1 != null ) {
try {
out1.Close();
}
catch (IOException e) {
// TODO Auto-generated catch
block

}
}
}
return 0 ;
}
[WebMethod] //断点续传
public int
uploadResume(String filename, String image, int tag)
{
FileStream out1 =
null;
byte[] bs = Convert.FromBase64String(image);
try
{

String
newFile = HttpContext.Current.Server.MapPath("upload/" + filename); //
上传文件存放路径
if (tag ==
0)
{

if(File.Exists(filename))
File.Delete(filename);
out1 = new
FileStream(newFile, FileMode.CreateNew,
FileAccess.Write);
}
else
{
out1 = new FileStream(newFile,
FileMode.Append, FileAccess.Write);
}
try
{
out1.Write(bs, 0,
bs.Length);
}
catch (IOException e1)
{
// TODO Auto-generated catch
block
;
}
}
catch (FileNotFoundException e2)
{
// TODO
Auto-generated catch block
return -1;
}
finally
{
if (out1 !=
null)
{
try
{
out1.Close();
}
catch (IOException e)
{
//
TODO Auto-generated catch block
}
}
}
return tag;
}
}
二.客户端
要使用 ksoap2库

package cn.serverice;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.SimpleDateFormat;

import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Base64; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;

public class Webserverice extends Activity {     /** Called when the activity is first created. */  private final String NAMESCROPE="http://mywebservice.cn/";  private final String METHOD_NAME="uploadResume";  private final String URL="http://192.168.1.18/3g/WebService.asmx";  private final String SOAP_ACTION="http://mywebservice.cn/uploadResume";  private Button btn;  private TextView txt1;    Handler handler=null;    //进程中调用view不安全

String str1="";   //返回调用值         @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                 txt1=(TextView)findViewById(R.id.txt1);                 btn=(Button)findViewById(R.id.btnok);         btn.setOnClickListener(new OnClickListener(){                  @Override   public void onClick(View v) {    // TODO Auto-generated method stub           final String filename="/sdcard/DCIM/012.3gp";                               handler=new Handler();           @SuppressWarnings("unused")     Thread webserviceThread = new Thread(){             @Override      public void run(){               uploadTest(filename);                          }                                   };           webserviceThread.start();   }                      });            }     private void uploadTest(String filename)     {      SimpleDateFormat sDateFormat =new SimpleDateFormat("yyyy-MM-dd_hhmmss");         String file1=sDateFormat.format(new java.util.Date())+filename.substring(filename.indexOf("."));       try     {       FileInputStream fis=new FileInputStream(filename);       //ByteArrayOutputStream baos=new ByteArrayOutputStream();       byte []buffer=new byte[100*1024];       int count=0;       int i=0;       while((count=fis.read(buffer))>=0){        String uploadBuffer=new String(Base64.encode(buffer,0,count,Base64.DEFAULT));           showServerice(uploadBuffer,file1,i);  //续传                     for(int j=0;j<1000;j++);                     i++;        }              fis.close();      }catch(FileNotFoundException e){        e.printStackTrace();      }catch(IOException e){         e.printStackTrace();       }     }

public void showServerice(String image,String file1,int tag)     {      SoapObject request = new SoapObject(NAMESCROPE, METHOD_NAME);      SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);            try {    request.addProperty("filename", file1);    request.addProperty("image",image);    request.addProperty("tag",tag);            envelope.bodyOut=request;     envelope.dotNet=true;    envelope.setOutputSoapObject(request);   } catch (Exception e1) {    // TODO Auto-generated catch block    Log.e("Error","错误1");   }            HttpTransportSE ht=new HttpTransportSE(URL);      ht.debug=true;      try      {       ht.call(SOAP_ACTION, envelope);       SoapObject result = (SoapObject) envelope.bodyIn;                    str1=result.getProperty(0).toString();                         //txt1.setText("uploadImage(filename,image)="+str1+" 成功!"); 在进程中不安全,要加入Runnable             handler.post(runnableUi);             }catch(Exception e){       Log.d("Error",e.getMessage());      }           }     Runnable runnableUi=new  Runnable(){      //给文本框设值          @Override             public void run() {                  //更新界面            txt1.setText("uploadImage(filename,image)="+str1+" 成功!");             }                         };

}

Android调用Webservice发送文件的更多相关文章

  1. 纠正网上乱传的android调用Webservice方法。

    1.写作背景: 笔者想实现android调用webservice,可是网上全是不管对与错乱转载的文章,结果不但不能解决问题,只会让人心烦,所以笔者决定将自己整理好的能用的android调用webser ...

  2. Android调用WebService(转)

    Android调用WebService WebService是一种基于SOAP协议的远程调用标准,通过 webservice可以将不同操作系统平台.不同语言.不同技术整合到一块.在Android SD ...

  3. sqlserver能否调用webservice发送短信呢?

    上班的时候突然有一个想法,sqlserver能否调用webservice发送短信呢? 经过查找资料,终于找到了解决办法,现将步骤贴到下面: (1)开启sqlserver组件功能,如果不开启这个组件功能 ...

  4. Android使用webService(发送xml数据的方式,不使用jar包)

    Android使用webService可以用ksoap2.jar包来使用.但是我觉得代码不好理解,而且记不住. 所以我查询了好多资料,以及自己的理解.可以用代码发送http请求(发送xml数据)来访问 ...

  5. 第十五章:Android 调用WebService(.net平台)

    什么是webservice? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和 ...

  6. Android 调用webService(.net平台)

    什么是webservice? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和 ...

  7. 【Android进阶】Android调用WebService的实现

    最近想自己搞搞服务器,就从最简单的webservice开始吧 先上效果图 项目结构 开始贴代码,注释都有,有问题的请留言 MainActivity.java package com.example.w ...

  8. 网摘Android调用WebService

    这边特别注意调用的.net WCF 接口的绑定方式.以前一直用的wxHttpbinding,一直连不上.改成BasicHTTPbinding就能连上了 上篇文章已经对Web Service及其相关知识 ...

  9. android调用webservice接口获取信息

    我的有一篇博客上讲了如何基于CXF搭建webservice,service层的接口会被部署到tomcat上,这一篇我就讲一下如何在安卓中调用这些接口传递参数. 1.在lib中放入ksoap2的jar包 ...

随机推荐

  1. 阿里云ECS 利用快照创建磁盘实现无损扩容数据盘

    在扩容数据盘时,若遇到磁盘原因导致无法无损的扩容时,可以临时购买一块独立云磁盘来存放数据,然后将数据盘彻底格式化来解决,以下是操作步骤: 1.  首先基于当前数据盘创建一个快照,备份数据,同时可以利用 ...

  2. ios中摄像头和图片调用

    推荐文章 http://www.xuanyusong.com/archives/1493 http://blog.csdn.net/ryantang03/article/details/7830996

  3. Maven实战——常用Maven插件介绍

    maven nexus 库已上传了第三方jar,但就是用mvn compile下不到本地 回答于 2013-06-04 14:40 你是通过何种方式上传到nexus的? 有给pom文件吗? 如果是单纯 ...

  4. linux 常见音乐、视频播放器简介

    2007-1-15 10:00:22     常见音乐播放器     xmms一族     xmms全称是X Multimedia System,这个经典的播放器可能是每个linux的使用者或多或少都 ...

  5. php使用wkhtmltopdf导出pdf

    参考:史上最强php生成pdf文件,html转pdf文件方法 http://biostall.com/wkhtmltopdf-add-header-footer-to-only-first-last- ...

  6. 【Android】Android 8种对话框(Dialog)

    1.写在前面 Android提供了丰富的Dialog函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍 ...

  7. 【C#】C#项目如何获得项目的根目录

    编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法     方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 ...

  8. 【JavaScript】浅析JavaScript对象如何添加属性和方法

    向JavaScript类中添加属性和方法,最直观的做法就是在类中定义属性和方法.JavaScript是一门弱语言,除了直接定义还可以用prototype来添加. 下面介绍从外部向JavaScript添 ...

  9. k近邻算法-java实现

    最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学python,就在朋友的推荐之下选择了这本书进行学习. 一 . K-近邻算法(KNN)概述 最简单最初级的分 ...

  10. java-容器-ArrayList

    工作中经常会用到Java的集合类,最近不忙了,把相关知识总结一下,便于理解记忆. 打开java.util.ArrayList的源代码,首先映入眼帘的是@author  Josh Bloch(相对于源码 ...