2009-06-26 19 views
26

Necesito llamar a un servicio web con una URL algo así como: "http://192.168.1.19/TestWeb/WebService.asmx" desde android.¿Cómo llamar a un servicio web .NET desde android?

¿Alguien me puede ayudar con un ejemplo completo?

+0

que no entiendo. Su servicio web está en .NET. ¿Dónde entra Android? ¿Dónde está el método HelloWorld? –

+0

Gracias por la edición. ¿Qué has intentado hasta ahora? ¿Con qué parte estás teniendo problemas? –

+0

¿Por qué empezaste una nueva pregunta en lugar de editarla con más detalles? – blowdart

Respuesta

31

Finalmente, tengo la solución para mi propia pregunta.

Aquí está el código:

package projects.ksoap2sample; 



import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import android.app.*; 
import android.os.*; 
import android.widget.TextView; 

public class ksoap2sample extends Activity { 
    /** Called when the activity is first created. */ 
    private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld"; 

    private static final String METHOD_NAME = "HelloWorld"; 

    private static final String NAMESPACE = "http://tempuri.org/"; 
    private static final String URL = "http://192.168.1.19/TestWeb/WebService.asmx"; 
    TextView tv; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv=(TextView)findViewById(R.id.text1); 
     call(); 

    } 

    public void call() 
    { 
     try { 

      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

      request.addProperty("passonString", "Rajapandian"); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet=true; 
      envelope.setOutputSoapObject(request); 

      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
      androidHttpTransport.call(SOAP_ACTION, envelope); 

      Object result = (Object)envelope.getResponse(); 

      tv.setText(result.toString()); 
     } catch (Exception e) { 
      tv.setText(e.getMessage()); 
      } 
    } 
} 

Saludos Rajapandian

+1

en este código ¿dónde está la propiedad de tiempo de espera de solicitud si quiero establecerlo en 30 segundos? Cualquier ayuda sería apreciada. – UMAR

+0

Nota: este código debe venir con la versión de Android de las versiones ksoap2, j2me o j2se de ksoap2 no funcionará – jondinham

Cuestiones relacionadas