2010-06-23 75 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(因爲服務器要求)(做一個機器人搜索);)...希望這給你的想法。