2010-06-23 78 views
24

我正在使用Ksoap2-Android来使用WCF服务。如何使用Ksoap2使用会话相关的WCF服务-Android

对于DOTNET客户我们保持allowCookies="true"在我们的绑定配置,并将其发送相同的会话ID,并保持我的会话保持不变在我的WCF服务(我的服务是 相互依存,并使用会话)。

任何人都知道ksoap2-android的任何此类设置,这将允许我使用WCF服务来保持会话在服务器上的完整无损。

当前当我拨打服务的新电话时,sessionid被更改,所有我的 会话变量清除并释放其值。

回答

1

在C#接下来我要做的,只是使用android的方法来做到这一点:

1.-使HTTP请求, 2:制作的第一个请求的Cookie的容器。 3.-将cookieContainer放在第二个请求上,例如,您可以将一个bundle放入第二个activity的intent中,然后使用这个cookie发送第二个http请求...

我的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); 
      } 

     } 
    } 

我这样做,为保持第一请求的sesionID,后来,在第二个请求,我想补充的CookieContainer(因为服务器要求)(做一个机器人搜索);)...希望这给你的想法。