前段时间刚弄完这个,已经上线使用了,见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);//发送参数
谢谢。不过我是做服务器端的,在收到android端的数据后,直接用.NET的base64方法解析,这样做对吗?
@ttssrs: 对,服务端我也做的,如下Byte[] byte=Convert.FromBase64String(传过来的值)
@olue: 为什么你的android端转换了那么多次?如果服务器端要把图片以json格式传给android端,也要这样转换吗?
@ttssrs:byte[]->stream->byteEntity就这三大步必不可少的 ;android端接收图片的例子网上有很多,博客园android客户端的源码里就有,你先找找看
@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: 刚去看了下android端接收图片的一些代码,目前主流的方法是服务端抛出图片的URL,然后android端根据URL进行下载,这种方式比较简单、可控
用HTTP绑定,可以,能。
又一次得到您的帮助,非常感谢。不知道有没有实例可以借鉴学习?
@Launcher: 谢谢