2010-05-13 13 views
18

मैं कुकीज़ को याद रखने के लिए VB.net वेब क्लाइंट चाहता हूं।कुकीज का उपयोग करने के लिए मैं वेब क्लाइंट कैसे प्राप्त कर सकता हूं?

मैंने कई अधिभार कक्षाओं की खोज की और कोशिश की है।

मैं POST के माध्यम से किसी वेबसाइट पर लॉगिन करना चाहता हूं, फिर किसी अन्य पृष्ठ पर पोस्ट करना चाहता हूं और अभी भी अपना सत्र बनाए रखने के दौरान इसकी सामग्री प्राप्त करना चाहता हूं।

क्या WebBrowser नियंत्रण के बिना VB.net के साथ यह संभव है?

मैंने चिलकट.एचटीटीपी की कोशिश की और यह काम करता है, लेकिन मैं नेट पुस्तकालयों का उपयोग करना चाहता हूं।

उत्तर

44

वेब क्लाइंट से विरासत में एक नई कक्षा बनाएं जो कुकी कंटेंटर को @ गुफा कहते हैं। यहाँ कोड है कि मुझे लगता है कि है कि करता है का उपयोग करें और यह भी संदर्भित जीवित रखता है:

Public Class CookieAwareWebClient 
    Inherits WebClient 

    Private cc As New CookieContainer() 
    Private lastPage As String 

    Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest 
     Dim R = MyBase.GetWebRequest(address) 
     If TypeOf R Is HttpWebRequest Then 
      With DirectCast(R, HttpWebRequest) 
       .CookieContainer = cc 
       If Not lastPage Is Nothing Then 
        .Referer = lastPage 
       End If 
      End With 
     End If 
     lastPage = address.ToString() 
     Return R 
    End Function 
End Class 

यहाँ ऊपर कोड के सी # संस्करण है:

using System.Net; 
class CookieAwareWebClient : WebClient 
{ 
    private CookieContainer cc = new CookieContainer(); 
    private string lastPage; 

    protected override WebRequest GetWebRequest(System.Uri address) 
    { 
     WebRequest R = base.GetWebRequest(address); 
     if (R is HttpWebRequest) 
     { 
      HttpWebRequest WR = (HttpWebRequest)R; 
      WR.CookieContainer = cc; 
      if (lastPage != null) 
      { 
       WR.Referer = lastPage; 
      } 
     } 
     lastPage = address.ToString(); 
     return R; 
    } 
} 
+0

इसे आजमाएगा। धन्यवाद। यह अन्य उत्तराधिकारी के समान है, फिर अधिभार वर्ग Ive मिला। – Jeremy

+0

मैं पूर्ण सफलता के साथ वर्षों से इसका उपयोग कर रहा हूं। यदि यह आपके लिए काम नहीं कर रहा है तो यह कुकी/सत्र समस्या नहीं है, लेकिन शायद आप जिस वेबसाइट पर जा रहे हैं वह फॉर्म-स्टेट को संशोधित करने के लिए जावास्क्रिप्ट का उपयोग कर रहा है। यदि ऐसा है तो या तो जावास्क्रिप्ट पर जांच करें या केवल पैकेट मॉनीटर या फिडलर का उपयोग करें ताकि यह देखने के लिए कि तार पर वास्तव में क्या भेजा जा रहा है। –

+0

ne1 को C# में पोस्ट कर सकता है, और मेरा problm भी समान है, मैंने इसके लिए एक प्रश्न पोस्ट किया है लेकिन मुझे जवाब के लिए खोज के दौरान प्रासंगिक उत्तर नहीं मिला .. – FosterZ

4

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

+0

सुझाव के लिए धन्यवाद। – Jeremy

संबंधित मुद्दे

 संबंधित मुद्दे