2010-06-23 11 views
24

का उपयोग कर सत्र निर्भर डब्ल्यूसीएफ सेवाओं का उपभोग कैसे करें WCF सेवाओं का उपभोग करने के लिए मैं Ksoap2-Android का उपयोग कर रहा हूं।Ksoap2-Android

डॉटनैट ग्राहक हम अपने बंधन विन्यास में allowCookies="true" रखने के लिए और यह एक ही sessionid भेजता है और मेरी WCF सेवाओं में मेरी सत्र वैसे ही रखता है (मेरी सेवाओं अन्योन्याश्रित हैं और सत्र उपयोग करें)।

कोई भी ksoap2-android के लिए ऐसी कोई सेटिंग जानता है, जो मुझे सर्वर पर मेरे सत्र को बरकरार रखते हुए डब्ल्यूसीएफ सेवा का उपभोग करने की अनुमति देगा।

वर्तमान में जब मैं सेवा के लिए एक नया कॉल करता हूं, sessionid बदल जाता है और मेरे सभी सत्र चर उनके मूल्यों को साफ़ और ढीला करते हैं।

उत्तर

1

सी # में मुझे क्या अगले, बस एंड्रॉयड तरीकों का उपयोग यह करने के लिए:

1.- HTTP अनुरोध, 2.- पहले अनुरोध की एक कुकी कंटेनर करें। 3.- कुकी अनुरोधकर्ता को दूसरे अनुरोध पर रखें, उदाहरण के लिए आप दूसरी गतिविधि के लिए एक उद्देश्य में एक बंडल डाल सकते हैं, और दूसरे कुकीज़ अनुरोध भेजने के लिए इस कुकीज़ का उपयोग कर सकते हैं ...

मेरा सी # कोड;

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 जोड़ने (क्योंकि सर्वर मुझे आवश्यकता है) (क बॉट खोज बनाने के लिए);) ... उम्मीद है कि यह आपको विचार दे।