Tratando de conectar la aplicación de Android a .NET ".svc" webservice y el servidor responde Tipo de soporte no compatible
Estoy intentando conectar la aplicación de Android al servicio web de Axapta que tiene extensión .svc. Estoy usando KSAP 2.5.4 jar con todas las dependencias. A continuación se muestra el código. No pude conectarme al servicio web porque el volcado de respuesta indica que el tipo de medio no es compatible con el servidor.
Servicio web :
- ¿Cómo mostrar html / páginas web externas dentro de la aplicación android?
- Cómo mostrar el contenido web en iOS y Android mediante QML
- Cómo restablecer completamente la vista web de Android antes de cargar la nueva solicitud
- Manejar url desde la vista web onCreateWindow
- La mejor manera de cargar datos externos en android
Arranque y funcionamiento correctamente mientras se conecta desde Windows Phone
Código:
import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.ksoap2.transport.ServiceConnection; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class SoapActivity extends Activity { private static String mSOAPACTION="http://schemas.microsoft.com/dynamics/2008/01/services/LocalEndpointService/read", mOPERATIONNAME="read", WSDL_TARGET_NAMESPACE = "http://schemas.microsoft.com/dynamics/2008/01/services/"; private static String mNAMESPACE="http://schemas.microsoft.com/dynamics/2008/01/services/"; private static String mMETHODNAME="read"; private static String mURL="http://192.168.100.188/MicrosoftDynamicsAXAif50/localendpointservice.svc?wsdl"; private SoapPrimitive result = null; public static Context context=null; private HttpTransportSE httpTransportSE = null; private TextView tv = null; public void onCreate(Bundle savedInstanceState){ SoapSerializationEnvelope envelope = null; SoapObject Request = null; ServiceConnection sc = null; super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView)findViewById(R.id.tv); try { envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12); envelope.setAddAdornments(false); envelope.encodingStyle = SoapSerializationEnvelope.ENC; envelope.env=SoapSerializationEnvelope.ENV; envelope.implicitTypes = true; Request = new SoapObject(mNAMESPACE, mMETHODNAME); //Request = new SoapObject(mNAMESPACE, mOPERATIONNAME); //Request.addProperty("LocalEndpointServiceReadRequest", "Qing"); envelope.dotNet = true; envelope.setOutputSoapObject(Request); //envelope.addMapping(mNAMESPACE, "UserCredentials",new UserCredendtials().getClass()); /*androidHttpTransport = new AndroidHttpTransport(mURL); androidHttpTransport.debug = true; androidHttpTransport.call(mSOAPACTION, envelope);*/ httpTransportSE = new HttpTransportSE(mURL); /*sc = httpTransportSE.getConnection(); if(sc!=null){ sc.setRequestProperty("Content-Type", "text/xml"); }else{ Log.i(getClass().getSimpleName(),"SC : null."); }*/ httpTransportSE.debug = true; //httpTransportSE.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); httpTransportSE.call(mSOAPACTION, envelope); Object response = envelope.getResponse(); tv.setText(response.toString()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ Log.i(getClass().getSimpleName(),"requestDump : "+httpTransportSE.requestDump); Log.i(getClass().getSimpleName(),"responseDump : "+httpTransportSE.responseDump); } } }
RequestDump :
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://www.w3.org/2001/12/soap-encoding" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> <v:Header /> <v:Body> <read xmlns="http://schemas.microsoft.com/dynamics/2008/01/services/" /> </v:Body> </v:Envelope>
ResponseDump :
El servidor no puede atender la solicitud porque el tipo de medio no es compatible.
Nota : He actualizado el código porque he encontrado que el servicio web es de versión 1.2 de jabón.
- Excepción de puntero nulo que hace difícil pasar un arreglo usando ksoap
- Android ViewPager + Webview, ClassCastException! Necesita una vista web en un viewpager
- cómo extender el WebView correctamente?
- REST y SOAP webservice en android
- Android: ZoomPicker se rompe enTouchListener
- ¿Cómo se puede pasar JSON a AngularJS en la vista web de Android?
- El banner de instalación de la aplicación no funciona
- Giro a la izquierda / derecha de Android en la actividad de WebView (haciendo clic en vínculos y desplazamiento vertical)
Creo que el problema actual está en la URL. La URL del servicio no es:
http://192.168.100.188/MicrosoftDynamicsAXAif50/localendpointservice.svc?wsdl
Esa es la URL de la descripción del servicio (archivo WSDL) que acepta sólo las solicitudes HTTP GET (todas las solicitudes SOAP para el servicio WCF son HTTP POST). Su solicitud de comentario muestra que está intentando enviar una solicitud a esta URL, siempre fallará. La dirección URL del servicio está sin la cadena de consulta ?wsdl
:
http://192.168.100.188/MicrosoftDynamicsAXAif50/localendpointservice.svc
- Cómo obtener el estado de progreso de carga mapview en android?
- Android CollapsingToolbarLayout título – error de margen superior