我正在尝试用于教育目的,使用Android的相机获取照片并使用SOAP将其发送到web服务。
首先,相机发送给我一个byte[]
数组,但这不是可序列化的,我不能将其发送给webservice。现在我正试图将其转换为String
(此类型是可序列化的),并在web服务中将此String
重新转换为byte[]
数组。
我怎么能做到呢?
例如,我正在尝试:
request.addProperty("photo", (Arrays.toString((byte[])params[0])));
我如何得到这个String
并转换为原来的byte[]
?
提前感谢!
如果您确实需要将byte[]
转换为String
,请使用用于任意字节数据的中间序列化,例如Base64。String
s用于字符数据,而不是任意的byte[]
s。
Android的Base64
类使以上这些变得微不足道。
这个问题几乎是Android的复制品:使用Base64将图像编码为字符串
如果你的web服务只支持ASCII输入,你可以用Base64编码你的数据:
最后我用它来发送byte[]到Webservice并解码它。谢谢!
ANDROID SOAP SERVICE:
request.addProperty("photo", Base64.encodeToString((byte[])params[0], Base64.DEFAULT));
SOAP的WEBSERVICE BASE64Decoder decoder = new BASE64Decoder();
byte[] a = decoder.decodeBuffer(VAR);