【问题标题】:trouble in receiveing byte [] from wcf ksoap2 to android从 wcf ksoap2 接收字节 [] 到 android 时遇到问题
【发布时间】:2014-01-14 14:07:25
【问题描述】:

我正在尝试将图像从 wcf ksoap2 发送到 android。在 wcf 方面,我已将所有图像转换为字节数组并将它们存储在 ArrayList 中。在 android 端,我尝试填充 ArrayList<Byte> arrays; 但它没有填充,它仍然是空的。 这是我的代码

wcf:

        List<byte[]> list;
        public List<byte[]> loadImages()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Users\User\Desktop\abc");
            arr1 = new ArrayList();
            foreach (FileInfo fi in directoryInfo.GetFiles())
                arr1.Add(fi.FullName);



            list = new List<byte[]>();
            for (int i = 0; i < arr1.Count; i++)
            {
                img = Image.FromFile(arr1[i].ToString());
                ms = new MemoryStream();
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                list.Add(ms.ToArray());
                //                objbyte = (byte[])ms.ToArray();
            }

            return list;
        }

机器人:

            SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
            SoapSerializationEnvelope soapEnvelop;
            soapEnvelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            soapEnvelop.dotNet = true;
            soapEnvelop.setOutputSoapObject(Request);
            HttpTransportSE htps = new HttpTransportSE(URL);

            htps.call(SOAP_ACTION, soapEnvelop);
            response = (SoapObject) soapEnvelop.getResponse();    
            ar = new String[response.getPropertyCount()];

            arrays = new ArrayList<Byte>();

            if (response != null) {

                if (response.getPropertyCount() > 0) {                  

                    for (int i = 0; i < response.getPropertyCount(); i++) {

                        arrays.add( (Byte) response.getProperty(i)); 
                    }
                }
            }

for 循环正常执行,但 arrays 仍为空

我想一次发送 10-15 张图片。 提前致谢

【问题讨论】:

  • ar = new String[response.getPropertyCount()];的目的是什么
  • 您是否尝试过调试以查看(Byte) response.getProperty(i) 的值?
  • ar 是 String[] ar;。我以前用过,但没有帮助

标签: c# java android wcf


【解决方案1】:

代码如下:

SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
            SoapSerializationEnvelope soapEnvelop;
            soapEnvelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            soapEnvelop.dotNet = true;
            soapEnvelop.setOutputSoapObject(Request);
            HttpTransportSE htps = new HttpTransportSE(URL);

            htps.call(SOAP_ACTION, soapEnvelop);
            response = (SoapObject) soapEnvelop.getResponse();    
            ar = new String[response.getPropertyCount()];

            arrays = new ArrayList<Byte>();

            if (response != null) {

                if (response.getPropertyCount() > 0) {                  

                    for (int i = 0; i < response.getPropertyCount(); i++) {

                        arrays.add( (Byte) response.getProperty(i)); 
                    }
                }
            }

【讨论】:

    【解决方案2】:

    您将数据转换为Byte,但是您有一个Byte[]

    【讨论】:

    • @yakhtarali arrays = new ArrayList&lt;Byte&gt;(); 首先应该是 arrays = new ArrayList&lt;Byte[]&gt;();
    • 如果是投射问题,Android 端应该有异常
    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 2018-09-10
    • 2015-08-10
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多