android在http中发送二进制数据

时间:2014-04-30 17:46:18

标签: android http bitmap

我有以下代码使用android http默认客户端发送图像(位图二进制数据):

//gets raw binary data and convert it to a string
ByteArrayOutputStream baos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String imageData = new String(imageBytes);
//http put body
StringEntity se = new StringEntity(imageData);
putRequest.setEntity(se);

我需要在put请求体中发送其原始二进制内容,但似乎内容未正确发送。

我可以使用curl和--data-binary发送图像二进制文件(这就是我在android中尝试做的事情)。

将位图二进制转换为字符串的过程是否正确?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,我的坏。

如果有人犯了同样的错误:

我应该使用ByteArrayEntity类而不是StringEntity类:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
//http put body
ByteArrayEntity be = new ByteArrayEntity(imageBytes);
putRequest.setEntity(be);

我试图将bytearray转换为字符串并发送它,正确的方法是使用ByteArrayEntity类。