2011-07-21 14 views
6

कोड में फ़ाइल डाउनलोड करने का प्रयास कर रहा है।फ़ाइल डाउनलोड करने के लिए HttpWebRequest का उपयोग कैसे करें

वर्तमान कोड:

Dim uri As New UriBuilder 
    uri.UserName = "xxx" 
    uri.Password = "xxx" 
    uri.Host = "xxx" 
    uri.Path = "xxx.aspx?q=65" 

    Dim request As HttpWebRequest = DirectCast(WebRequest.Create(uri.Uri), HttpWebRequest) 

    request.AllowAutoRedirect = True 

    request = DirectCast(WebRequest.Create(DownloadUrlIn), HttpWebRequest) 
    request.Timeout = 10000 
    'request.AllowWriteStreamBuffering = True 

    Dim response As HttpWebResponse = Nothing 
    response = DirectCast(request.GetResponse(), HttpWebResponse) 
    Dim s As Stream = response.GetResponseStream() 

    'Write to disk 
    Dim fs As New FileStream("c:\xxx.pdf", FileMode.Create) 

    Dim read As Byte() = New Byte(255) {} 
    Dim count As Integer = s.Read(read, 0, read.Length) 
    While count > 0 
     fs.Write(read, 0, count) 
     count = s.Read(read, 0, read.Length) 
    End While 

    'Close everything 
    fs.Close() 
    s.Close() 
    response.Close() 

इस कोड चल रहा है और response.ResponseUri जाँच इंगित करता है im लॉगइन पेज पर वापस और पीडीएफ फाइल करने के लिए नहीं जाया जा रहा।

किसी कारण से यह पहुंचने को अधिकृत नहीं कर रहा है क्योंकि मैं यूरी में उपयोगकर्ता नाम और पासवर्ड भेज रहा हूं क्योंकि मैं क्या खो सकता हूं? आपकी मदद के

+0

क्या पृष्ठ वास्तव में यूआरएल के माध्यम से प्राधिकरण की अनुमति देता है? या क्या आपको कुकी सेट करने वाले वेब इंटरफ़ेस के माध्यम से अधिकृत करने की आवश्यकता है? मैं बाद में अनुमान लगा रहा हूं, इस मामले में आपको 2 अनुरोध करने की आवश्यकता होगी, कुकी को लॉगिन और स्टोर करने के लिए, पीडीएफ (कुकी का उपयोग करके) – Steve

+0

अनुरोध करने के लिए दूसरा कोड मुझे डाउनलोड करने के लिए एक अच्छी शुरुआत देता है। धन्यवाद दोस्त – MiBol

उत्तर

4

आप शुद्ध से एक फ़ाइल डाउनलोड करने के लिए है कि कोड के सभी की जरूरत नहीं है बस WebClient वर्ग और उसके DownloadFile विधि का उपयोग करने के लिए धन्यवाद

+0

इसने कोशिश की है लेकिन एक ही समस्या के साथ यह लॉगिन पेज पर रीडायरेक्ट कर रहा है। – David

0

आप की जाँच करनी चाहिए और देखना साइट कुकीज़ की आवश्यकता है (सबसे करें), मैं एक पैकेट विश्लेषक का उपयोग करता हूं और अपना कोड चलाता हूं और देखता हूं कि सर्वर वास्तव में क्या कर रहा है। लॉग इन करने के लिए फिडलर या http विश्लेषक का उपयोग करें

+0

क्रोम डेवलपर टूल या फ़ायरफ़ॉक्स फ़ायरबग के साथ कुकीज़ और वास्तविक अनुरोध और प्रतिक्रिया शीर्षकों के अस्तित्व को निर्धारित करने के लिए पर्याप्त होना चाहिए। लेकिन कुछ वेब अनुप्रयोगों पर स्क्रिप्टिंग पहचान के अधिक परिष्कृत तरीके हैं। – scones

0

यूडब्लूपी के साथ, यह एक और अधिक प्रासंगिक सवाल बन गया है क्योंकि यूडब्ल्यूपी के पास WebClient नहीं है। इस प्रश्न का सही उत्तर यह है कि यदि आपको लॉगिन पृष्ठ पर फिर से निर्देशित किया जा रहा है, तो HttpWebRequest के लिए आपके क्रेडेंशियल या सेटिंग (या की कमी) शीर्षलेख के साथ कोई समस्या होनी चाहिए।

Microsoft के अनुसार, डाउनलोड करने के लिए अनुरोध कॉल के साथ GetResponse() को HttpWebRequest पर भेज दिया जाता है, इसलिए डाउनलोड की गई फ़ाइल प्रतिक्रिया (GetResponse() कॉल ऊपर उल्लेख द्वारा लौटाए) में धारा में होना चाहिए।