0

我试图从我的 android 应用程序中的 base64Binary 字段中获取一个字节 []。我设法获取数据,但由于某种原因,数据数组在某些地方充满了值,其中 C# 中的相同数据数组返回正数,例如:

在 C# webservice 中,字节数组可能看起来像 46,0,45...... 而在 android 中它看起来像 46,0, -112......

如何使用 KASOP2 从 base64Binary 字段中获取正确的字节数组?

这是我目前使用的代码:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
request.addProperty("Name", sName);
SoapSerializationEnvelope envelope =
  new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);


try
{
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
Object o = envelope.bodyIn;
SoapPrimitive result =  (SoapPrimitive)envelope.getResponse();
//to get the data should be a base
String resultData = result.toString();


} 

ps我已经通过大约6个不同的base64解码类运行resultData,它们都解码错误,所以我猜问题是响应返回的字符串。

任何帮助将不胜感激,谢谢,图腾

4

2 回答 2

0

我遇到了完全相同的问题,然后我点击了这个链接 http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html

我从 Robert W. Harder 的网站下载了 Base64 类,它工作正常,我唯一做的就是在类本身中添加我的包定义,以便我可以使用它。

注意:我正在使用 Android 1.6,所以我可以假设它可以向上工作。

希望这可以帮助 :)

于 2011-01-25T06:28:35.823 回答
0

实际上我的问题很简单,我忘记了服务器是 c++,因此 base64 编码的字节是无符号的,我为 java 找到的所有类都是字节。只需从读取流中删除带符号的位,如下所示:

nextByte = (short)(0xFF & (short)buf[offset + i]);
于 2011-02-14T18:01:26.953 回答