studio - Cómo consumir servicios WCF dependientes de la sesión utilizando Ksoap2-Android
ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar download (1)
En C # hago lo siguiente, solo usa los métodos de Android para hacer esto:
1.- Realiza la solicitud de Http, 2.- Crea un Contenedor de Galletas de la primera solicitud. 3.- Ponga el cookieContainer sobre la segunda solicitud; por ejemplo, puede agrupar un paquete en una intención para la segunda actividad y utilizar estas cookies para enviar la segunda solicitud http ...
Mi código de C #;
protected static void GetData()
{
CookieContainer cookies = new CookieContainer();
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create("https://any.com/url");
request1.CookieContainer = cookies;
HttpWebResponse response1 = (HttpWebResponse)request1.GetResponse();
StreamReader responseReader1 = new StreamReader(response1.GetResponseStream());
Response1 = responseReader1.ReadToEnd();
responseReader1.Close();
responseReader1.Dispose();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.CookieContainer = cookies;
request.Method = "GET";
request1.KeepAlive = true;
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());
Response = responseReader.ReadToEnd();
responseReader.Close();
responseReader.Dispose();
if (Response.Contains("Server Error in ''/Verification'' Application."))
{
Console.WriteLine("Empty Registry" + Url);
}
}
catch (WebException ex)
{
if (ex.Response != null)
{
Console.WriteLine("Failed at: " + Url);
}
if (ex.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
Console.WriteLine(ex.Status);
}
}
else if (ex.Status == WebExceptionStatus.NameResolutionFailure)
{
Console.WriteLine(ex.Status);
}
}
}
Hago eso para mantener el sesionID de la primera solicitud, y luego, en la segunda solicitud, agrego el cookieContainer (porque el servidor me requiere) (para hacer una búsqueda de bot);) ... espero que esto te dé ideas.
Estoy usando Ksoap2-Android
para consumir los servicios de WCF
.
Para el cliente allowCookies="true"
mantenemos allowCookies="true"
en nuestra configuración de enlace y envía el mismo sessionid y mantiene mis sesiones intactas en mis servicios WCF ( Mis servicios son interdependientes y uso las sesiones ).
Cualquiera conoce una configuración de este tipo para ksoap2-android
, que me permitirá consumir el servicio WCF manteniendo mi sesión intacta en el servidor.
Actualmente, cuando realizo una nueva llamada al servicio, el sessionid
se modifica y todas mis variables de sesión se borran y pierden sus valores.