繁体   English   中英

通过webservice从ms sql数据库发送字节数组到android

[英]Send byte array from ms sql database to android through webservice

我有一个C#Web服务,它从MS SQL数据库获取数据并将其作为XML字符串发送到Android设备。

然后我在Android中解析XML并将数据存储在Android数据库中

这适用于所有字符串和整数数据,但我不能得到一个字节数组(用于存储图像)以相同的方式工作

将字节数组添加到XML的我的C#代码如下所示:

XmlElement ImageStored = (XmlElement)StockItem.AppendChild(doc.CreateElement("ImageStored"));

ImageStored.InnerText = Convert.ToBase64String(stockItem.ImageStored);

在Android中我试过这个:

NodeList nImageStored = doc.getElementsByTagName("ImageStored");

for(int i = 0; i < nImageStored.getLength(); i++)
{
   byte[] pImageStored =  nImageStored.item(i).getFirstChild().getNodeValue().trim().getBytes();
   //save byte[] in database
}

这不会给我任何错误,并且会在数据库中保存一些内容,但是当显示图像时,没有任何内容出现。

任何有关如何使这项工作的帮助都会很棒。 这是我第一次尝试使用C#和Android,所以请原谅我,如果我是愚蠢的。

谢谢!

我不是一个Java人,但看起来你应该使用decode()而不是getBytes()。 换句话说,您只是将Base64编码的字符串存储在数据库中,而不是先将其解码。

public static byte [] decode(String str,int flags)

从以下版本开始:API Level 8解码输入中的Base64编码数据,并以新的字节数组返回数据。 末尾的填充'='字符被认为是可选的,但如果存在,则必须有正确的数字。

http://developer.android.com/reference/android/util/Base64.html

我使用第三方库ksoap2几乎一样。 好的,这是一个例子,首先我为我的对象创建了一个需要图像的包装类:

public class ImageClass {
    private byte[] AttractionImage;
    private String AttractionImageBase64;
        // TODO getter and setters
}

首先,您需要解码从.NET Web服务获得的base64字符串,因为我还使用了ksoad库:

ImageClass imageClass = new ImageClass();
imageClass.setAttractionImage(Base64.decode("your base62 string"));

如果您需要更多信息,请告诉我:)

你可以在这里找到ksoap: http//code.google.com/p/ksoap2-android/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM