2013-04-27 5 views
1

У меня есть WebService в VisualBasic .NET, которая дает картину со следующим кодом:Получить картинку на Android от .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 

И я стараюсь эту картину Получать от 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(); 
    } 
} 

И отлаживать все, кажется, все в порядке, но когда приложение запустится, место, где я должен увидеть изображение, будет белым. Я думаю, что это может быть проблема конверсии, но я не знаю, как я могу ее решить.

Может кто-нибудь мне помочь?

+0

У меня такая же проблема, я ценю, если вы можете поделиться решением, если нашли :-) –

ответ

0

Не могли бы вы поместить лог-журнал? Я предполагаю, что существует исключение, потому что вы обрабатываете сетевое событие в потоке пользовательского интерфейса. Попробуй вот так.

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(); 
    } 
Смежные вопросы