2011-06-08 25 views
5

का उपयोग करते समय सत्र रखना, मेरी प्रोजेक्ट में मैं सी # ऐप क्लाइंट और tomcat6 वेब एप्लिकेशन सर्वर का उपयोग कर रहा हूं। मैं सी # क्लाइंट में इस स्निपेट लिखा है:HttpWebRequest

public bool isServerOnline() 
{ 
     Boolean ret = false; 

     try 
     { 
      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL); 
      req.Method = "HEAD"; 
      req.KeepAlive = false; 
      HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
      if (resp.StatusCode == HttpStatusCode.OK) 
      { 
       // HTTP = 200 - Internet connection available, server online 
       ret = true; 
      } 
      resp.Close(); 
      return ret; 

     } 
     catch (WebException we) 
     { 
      // Exception - connection not available 
      Log.e("InternetUtils - isServerOnline - " + we.Status); 
      return false; 
     } 
} 

हर मैं इस विधि आह्वान, मैं सर्वर साइड पर एक नया सत्र मिलता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि मुझे अपने क्लाइंट में HTTP कुकीज़ का उपयोग करना चाहिए। लेकिन मुझे नहीं पता कि यह कैसे करना है, क्या आप मेरी मदद कर सकते हैं?

+0

अच्छा सवाल! सत्रों को स्थानांतरित करने से मुझे पिछले – Ivo

+0

में आवंटित किया गया है और क्या आपने इस मुद्दे को हल किया है? – CeccoCQ

+0

मैंने फिर से Guillaume सुझाव का उपयोग किया – Ivo

उत्तर

21

आपको CookieContainer का उपयोग करना होगा और कॉल के बीच उदाहरण रखना होगा।

private CookieContainer cookieContainer = new CookieContainer(); 
public bool isServerOnline() 
{ 
     Boolean ret = false; 

     try 
     { 
      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL); 
      req.CookieContainer = cookieContainer; // <= HERE 
      req.Method = "HEAD"; 
      req.KeepAlive = false; 
      HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
      if (resp.StatusCode == HttpStatusCode.OK) 
      { 
       // HTTP = 200 - Internet connection available, server online 
       ret = true; 
      } 
      resp.Close(); 
      return ret; 

     } 
     catch (WebException we) 
     { 
      // Exception - connection not available 
      Log.e("InternetUtils - isServerOnline - " + we.Status); 
      return false; 
     } 
} 
+0

धन्यवाद, मैं कोशिश करता हूं और यह बताता हूं कि यह काम करता है या नहीं। लेकिन मेरे पास एक सवाल है: यदि कुकी समाप्त हो गई है तो मैं इसे कैसे प्रबंधित कर सकता हूं? – CeccoCQ

+0

एक और सवाल है, लेकिन मुझे कुकी को प्रतिक्रिया से नहीं मिलना चाहिए? – CeccoCQ

+0

कंटेनर भरा जाएगा, आपको प्रतिक्रिया कुकी के बारे में परवाह नहीं है। इसके अलावा कंटेनर का आकार सीमित है और जब सीमा तक पहुंच जाती है, तो समाप्त हो चुकी कुकीज़ हटा दी जाती है। – Guillaume