我正在尝试用于教育目的,使用Android相机获取照片并使用SOAP将其发送到网络服务。
首先,相机发给我一个byte[]
数组,但这不是可序列化的,我无法将其发送到网络服务。现在我正在尝试将其转换为String
(此类型可序列化),并在网络服务中将此String
重新转换为byte[]
数组。
我怎么做?
例如,我正在尝试:
request.addProperty("photo", (Arrays.toString((byte[])params[0])));
我如何获得此String
并转换为原始byte[]
?
提前致谢!
答案 0 :(得分:2)
如果您确实需要将byte[]
转换为String
,请使用适用于任意字节数据的中间序列化,例如Base64。 String
用于字符数据,而不是任意byte[]
s。
Android's Base64
class使上述变得微不足道。
这个问题几乎与Android: using Base64 to encode an Image to String重复。
答案 1 :(得分:1)
如果您的网络服务仅支持ASCII输入,您可以在base 64中对数据进行编码:Base64 Encoding in Java
答案 2 :(得分:0)
最后我用它将byte []发送到Web服务并对其进行解码。 谢谢!
ANDROID SOAP SERVICE:
request.addProperty("photo", Base64.encodeToString((byte[])params[0], Base64.DEFAULT));
SOAP WEBSERVICE
BASE64Decoder decoder = new BASE64Decoder();
byte[] a = decoder.decodeBuffer(VAR);