2013-04-27 2 views
1

J'ai un WebService dans Visual Basic .NET qui donne une image avec le code suivant:Obtenez image pour Android de .net WebService

<WebMethod()> _ 
Public Function DevuleveImagen() As Byte() 

    Dim imagen As Byte() 
    Dim bm As New Bitmap("C:\Imagen.jpg") 
    Dim ms As New IO.MemoryStream 

    bm.Save(ms, Imaging.ImageFormat.Jpeg) 
    imagen = ms.GetBuffer() 
    ms.Close() 
    ms = Nothing 


    Return imagen 

End Function 

Et je tente de recive cette image à partir d'Android:

private void PonLogo(){ 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.setOutputSoapObject(request); 
    envelope.dotNet = true; 
    try { 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
      androidHttpTransport.call(SOAP_ACTION1, envelope); 
      SoapObject result = (SoapObject)envelope.bodyIn; 
      if(result != null) 
      { 
       Object o = result.getProperty(0); 
       byte[] b = o.toString().getBytes(); 
       Bitmap bMap = BitmapFactory.decodeByteArray(b, 0, b.length); 
       imgbannerjuego.setImageBitmap(bMap); 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show(); 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
} 

Et déboguer tout semble être bien, mais quand l'application commence, l'endroit où je devrais voir l'image est blanc. Je pense que cela pourrait être un problème de conversion, mais je ne sais pas comment je peux le résoudre.

Quelqu'un peut-il m'aider?

+0

J'ai le même problème, j'apprécie si vous pouvez partager la solution si vous l'avez trouvé :-) –

Répondre

0

Pourriez-vous mettre un logcat log? Je suppose qu'il existe une exception car vous gérez les événements réseau dans le thread d'interface utilisateur. Essayez comme ça.

private void PonLogo(){ 
    final SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1); 
    final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.setOutputSoapObject(request); 
    envelope.dotNet = true; 
    new Thread(new Runnable() { 
     public void run() { 
      try { 
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
        androidHttpTransport.call(SOAP_ACTION1, envelope); 
        SoapObject result = (SoapObject)envelope.bodyIn; 
        if(result != null) { 
         Object o = result.getProperty(0); 
         byte[] b = o.toString().getBytes(); 
         Bitmap bMap = BitmapFactory.decodeByteArray(b, 0, b.length); 
         yourActivity.runOnThreadUi(new Runnable() { 
         public void run() { 
          imgbannerjuego.setImageBitmap(bMap); 
         }); 
        } 
      } else { 
         yourActivity.runOnThreadUi(new Runnable() { 
         public void run() { 
          Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show(); 
         }); 
       } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     }).start(); 
    }