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()下加上一些代码后,在测试的时候程序没法正常运行,请各位巴士帮忙看看吧,急用
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。