2009-03-31 28 views
7

निम्न कोड 400 खराब अनुरोध अपवाद के साथ विफल रहता है। मेरा नेटवर्क कनेक्शन अच्छा है और मैं साइट पर जा सकता हूं लेकिन मुझे यह यूरी HttpWebRequest के साथ नहीं मिल सकता है।मेरा HttpWebRequest रिटर्न 400 खराब अनुरोध क्यों करता है?

private void button3_Click(object sender, EventArgs e) 
{ 
    WebRequest req = HttpWebRequest.Create(@"http://www.youtube.com/"); 
    try 
    { 
     //returns a 400 bad request... Any ideas??? 
     WebResponse response = req.GetResponse(); 
    } 
    catch (WebException ex) 
    { 
     Log(ex.Message);     
    } 
} 
+0

क्या यह एएसपीनेट या विंडोज़ फॉर्म है? – eglasius

उत्तर

13

सबसे पहले, एक HttpWebRequest इस तरह के WebRequest डाली: अपने HttpWebRequest में

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
+0

यह एक चैंप की तरह काम करता है! – user74373

3

हो सकता है कि आप किसी प्रॉक्सी सर्वर चल रहा है मिल गया है, और आप HttpWebRequest की प्रॉक्सी गुण सेट नहीं किया है?

+0

अच्छा अनुमान। यह प्रॉक्सी के लिए आंतरिक है जो मैं लिख रहा हूं। – user74373

4

इस समस्या के लिए कई कारण हो सकते हैं। क्या आपके पास WebException के बारे में कोई और जानकारी है?

एक कारण, जिसे मैंने पहले चलाया है, यह है कि आपके पास खराब उपयोगकर्ता एजेंट स्ट्रिंग है। कुछ वेबसाइटें (उदाहरण के लिए Google) जांचें कि स्वचालित बॉट्स को अपने पृष्ठों को मारने से रोकने के लिए ज्ञात उपयोगकर्ता एजेंटों से अनुरोध आ रहे हैं।

असल में, आप यह जांचना चाहेंगे कि YouTube के लिए उपयोगकर्ता अनुबंध आपको जो भी कर रहा है, वह करने से रोकता नहीं है। यदि ऐसा होता है, तो आप जो भी कर रहे हैं वह वेब सेवाओं जैसे अनुमोदित चैनलों के माध्यम से बेहतर हो सकता है।

5

सेट UserAgent और Referer:

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(@"http://www.youtube.com/"); 

फिर, कोड की इस पंक्ति को जोड़ने :

var request = (HttpWebRequest)WebRequest.Create(@"http://www.youtube.com/"); 
request.Referer = "http://www.youtube.com/"; // optional 
request.UserAgent = 
    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; " + 
    "Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; " + 
    ".NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; " + 
    "InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)"; 
try 
{ 
    var response = (HttpWebResponse)request.GetResponse(); 
    using (var reader = new StreamReader(response.GetResponseStream())) 
    { 
     var html = reader.ReadToEnd(); 
    } 
} 
catch (WebException ex) 
{ 
    Log(ex); 
} 
+0

मेरा सुझाव है कि वह Debug.WriteLine (ex.ToString()) का उपयोग करें, इसलिए वह केवल अपवाद ही नहीं बल्कि पूरे अपवाद को प्राप्त करता है। –

+0

@ जॉन, जो सैन्स बनाता है –

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