![](/img/trans.png)
[英]Reading byte array from a SQL database through WCF - maxArrayLength issue
[英]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.