首页 新闻 赞助 找找看

WCF与android通信传图片

0
悬赏园豆:15 [已解决问题] 解决于 2012-12-12 19:03

我想实现android客户端从WCF服务端上传或下载图片的功能,两者之间应该怎么传输图片?stream流可以吗?或者C#的base64编码与android的base64编码能相互解析吗?先谢谢了。

ttssrs的主页 ttssrs | 初学一级 | 园豆:82
提问于:2012-10-17 10:06
< >
分享
最佳答案
0

前段时间刚弄完这个,已经上线使用了,见android端的部分代码,仅作思路参考

JSONObject jt=new JSONObject();
jt.put("pic", base64字符串);//很长很长

String jsonData=jt.toString();

byte[] destObj=jsonData.getBytes("UTF-8");//将json数据转换成字节数组
//以下方法将字节数组转换成流
ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(arrayOutputStream);
try {
dataOutputStream.write(destObj);
dataOutputStream.flush();
dataOutputStream.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
//将流数据转换成字节数组实体,以便发送
ByteArrayEntity arrayEntity=new ByteArrayEntity(arrayOutputStream.toByteArray());
arrayEntity.setContentType("application/octet-stream");

HttpClient httpClient=new DefaultHttpClient();//初始化HttpClient对象
HttpPost httpPostRequest=new HttpPost(url);//创建HTTP Get连接
httpPostRequest.setEntity(arrayEntity);//发送参数

收获园豆:10
olue | 菜鸟二级 |园豆:227 | 2012-10-19 10:05

谢谢。不过我是做服务器端的,在收到android端的数据后,直接用.NET的base64方法解析,这样做对吗?

ttssrs | 园豆:82 (初学一级) | 2012-10-19 15:25

@ttssrs: 对,服务端我也做的,如下Byte[] byte=Convert.FromBase64String(传过来的值)

olue | 园豆:227 (菜鸟二级) | 2012-10-19 15:32

@olue: 为什么你的android端转换了那么多次?如果服务器端要把图片以json格式传给android端,也要这样转换吗?

ttssrs | 园豆:82 (初学一级) | 2012-10-19 20:14

@ttssrs:byte[]->stream->byteEntity就这三大步必不可少的 ;android端接收图片的例子网上有很多,博客园android客户端的源码里就有,你先找找看

olue | 园豆:227 (菜鸟二级) | 2012-10-19 20:23

@olue: 我给android客户端返回图片时,在接口中定义的是返回json格式的,返回的代码是这样写的:

FileStream fs = new FileStream(adFilePath, FileMode.Open);
int i = (int)fs.Length;
byte[] content = new byte[i];
fs.Read(content, 0, i);

string result = Convert.ToBase64String(content);
fs.Close();
return result;

用抓包工具测试的时候出错了,难道不能直接返回string吗?我的其它函数的定义也是接收json格式,返回json格式,代码直接返回的string,就没有问题。

ttssrs | 园豆:82 (初学一级) | 2012-10-24 11:08

@ttssrs: 刚去看了下android端接收图片的一些代码,目前主流的方法是服务端抛出图片的URL,然后android端根据URL进行下载,这种方式比较简单、可控

olue | 园豆:227 (菜鸟二级) | 2012-10-24 11:27
其他回答(1)
0

用HTTP绑定,可以,能。

收获园豆:5
Launcher | 园豆:45045 (高人七级) | 2012-10-17 13:25

又一次得到您的帮助,非常感谢。不知道有没有实例可以借鉴学习?

支持(0) 反对(0) ttssrs | 园豆:82 (初学一级) | 2012-10-17 13:58

@Launcher: 谢谢

支持(0) 反对(0) ttssrs | 园豆:82 (初学一级) | 2012-10-19 15:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册