2014-01-14 33 views
1

我想從wcf ksoap2發送圖像到android。在wcf端,我已經將所有圖像轉換爲字節數組並將它們存儲在ArrayList中。在android側,我試圖填充ArrayList<Byte> arrays;但它沒有填充,它仍然是空的。 這裏是我的代碼從wcf ksoap2接收字節[]的麻煩到android

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圖片。 在此先感謝

+0

什麼是'AR =新的String的目的[response.getPropertyCount ()];' – RonK

+0

您是否嘗試過調試以查看'(Byte)response.getProperty(i)'的值? – RonK

+0

ar是String [] ar ;.我之前使用過它,但這並沒有幫助 – yakhtarali

回答

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)); 
        } 
       } 
      } 
0

您是鑄造數據作爲Byte,但是你有一個Byte[]

+0

我該如何解決這個問題? – yakhtarali

+0

@yakhtarali'arrays = new ArrayList ();'應該是'arrays = new ArrayList ();'作爲開始。 – Fildor

+0

如果這是一個Casting問題,那麼Android的結束應該有一個Exception – RonK