android上传图片到webservice,android调用.net webservice上传图片问题

android调用.net webservice上传图片问题

(2013-06-21 18:25:54)

标签:

androrid

c

上传

webservice

android程序代码:

package com.example.uploadimage;

import java.io.ByteArrayOutputStream;

import java.io.FileInputStream;

import java.io.IOException;

import org.kobjects.base64.Base64;

import org.ksoap2.SoapEnvelope;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.net.Uri;

import android.os.Bundle;

import android.os.StrictMode;

import android.provider.MediaStore;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.*;

public class UploadImageActivity extends Activity {

public static final String IMAGE_UNSPECIFIED = "image

} catch (Exception e) {

System.out.println("失败!");

System.out.println(e);

e.printStackTrace();

}

return false;

//return soapObject;

}

}

webservice代码:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

using System.IO;

using System.Drawing;

namespace WebService1

{

///

/// Service1 的摘要说明

///

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

[System.Web.Script.Services.ScriptService]

public class Service1 : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World,调用成功!";

}

[WebMethod]

public string FileUploadImage(string bytestr)

{

if (bytestr.Trim() =="")

{

return "文件上传失败!";

}

string name = "";

string mess = "";

try

{

// Random random = new Random();

//string i = random.Next(0, 10000000).ToString();

name = DateTime.Now.Year.ToString() + DateTime.Now.Month +

DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute +

DateTime.Now.Second;

bool flag = StringToFile(bytestr, Server.MapPath("image\") + "" +

name + ".jpg");

string filePath = "/image/" + name + ".jpg";

}

catch (Exception ex)

{

mess = ex.Message;

}

if (mess != "")

{

return mess;

}

else

{

return "文件上传成功";

}

}

protected System.Drawing.Image Base64StringToImage(string

strbase64)

{

try

{

byte[] arr = Convert.FromBase64String(strbase64);

MemoryStream ms = new MemoryStream(arr);

//Bitmap bmp = new Bitmap(ms);

ms.Write(arr, 0, arr.Length);

System.Drawing.Image image =

System.Drawing.Image.FromStream(ms);

ms.Close();

return image;

//return bmp;

}

catch (Exception ex)

{

throw ex;

}

}

///

/// 把经过base64编码的字符串保存为文件

///

///

name="base64String">经base64加码后的字符串

///

name="fileName">保存文件的路径和文件名

/// 保存文件是否成功

public static bool StringToFile(string base64String, string

fileName)

{

//string path =

Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase)

+ @"/beapp/" + fileName;

System.IO.FileStream fs = new System.IO.FileStream(fileName,

System.IO.FileMode.Create);

System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs);

if (!string.IsNullOrEmpty(base64String)

&& File.Exists(fileName))

{

bw.Write(Convert.FromBase64String(base64String));

}

bw.Close();

fs.Close();

return true;

}

}

}

android程序原本是用2.版本开发的,但是在连接webservice的时候出现异常:android.os.NetWorkOnMainThreadException

后来在网上找到答案,用2.3版本在onCreate()下加上一些代码后,在测试的时候程序没法正常运行,请各位巴士帮忙看看吧,急用

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值