Soy nuevo en el desarrollo Android, he comenzado realizando una aplicación que consume un WebService, es bastante sencillo, me ayude de la biblioteca ksoap2-android.
MainActivity.java
Código Java:
Ver original
package name.rodmoreno.webservice; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; import android.widget.EditText; import android.view.View; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } try{ SoapObject userRequest = new SoapObject(NAMESPACE, METHOD); userRequest.addProperty("nombre", Nombre); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(userRequest); HttpTransportSE androidHttpTransport = new HttpTransportSE(ENDPOINTWS); androidHttpTransport.debug = true; androidHttpTransport.call(SOAP_ACTION, envelope); respuesta = envelope.getResponse().toString(); } e.printStackTrace(); } return respuesta; } TextView textoSalida = (TextView) findViewById(R.id.salida); EditText textoEntrada = (EditText) findViewById(R.id.entrada); textoSalida.setText(consumirWS(textoEntrada.getText().toString())); } }
activity_main.xml
Código XML:
Ver original
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="Rodrigo" android:ems="10" android:id="@+id/entrada" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/boton"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enviar" android:id="@+id/boton" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:onClick="enviarNombre"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Hola..." android:id="@+id/salida" android:layout_centerVertical="true" android:layout_alignLeft="@+id/entrada" android:layout_alignRight="@+id/boton"/> </RelativeLayout>
En el camino me encontré con un problema yo estaba usando la API 16 y no se ejecutaba y leyendo un poco encontré que desde la API 11 en adelante las conexiones debía hacerlas en otro hilo, por ello mi app no funcionaba.
Quisiera saber, como hacer el mismo ejemplo, pero haciendo la conexión en otro hilo, intenté haciendolo así, pero no conseguí nada.
MainActivity.java
Código Java:
Ver original
package name.rodmoreno.webservice3; import android.os.Bundle; import android.os.AsyncTask; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.TextView; import android.widget.EditText; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; public class MainActivity extends Activity { TextView textoSalida; EditText textoEntrada; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textoSalida = (TextView) findViewById(R.id.salida); textoEntrada = (EditText) findViewById(R.id.entrada); } @Override // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } new consumirWS().execute(textoEntrada.getText().toString()); } } protected void onPreExecute(){ } try{ SoapObject userRequest = new SoapObject(NAMESPACE, METHOD); userRequest.addProperty("nombre", Nombre); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(userRequest); HttpTransportSE androidHttpTransport = new HttpTransportSE(ENDPOINTWS); androidHttpTransport.debug = true; androidHttpTransport.call(SOAP_ACTION, envelope); } e.printStackTrace(); } return respuesta; } } textoSalida.setText(respuesta).toString(); } }
Con este codigo solo consigo este error:
Gradle:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':WebService3:compileDebug'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.