http

2015-03-11 8 views
5

पर मूल प्रमाणीकरण भेजना मैं उस पृष्ठ से स्रोत को पढ़ने की कोशिश कर रहा हूं जिसके लिए मूल प्रमाणीकरण की आवश्यकता है। हालांकि, मेरे HttpWebRequest में एक शीर्षलेख और यहां तक ​​कि प्रमाण-पत्रों का उपयोग करके, मुझे अभी भी एक अनधिकृत अपवाद [401] वापस आ गया है।http

string urlAddress = URL; 
string UserName = "MyUser"; 
string Password = "MyPassword"; 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);  
      if (UserName != string.Empty) 
      { 
       string encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(UserName + ":" + Password)); 
       request.Headers.Add("Authorization", "Basic " + encoded); 
       System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); 
       credentialCache.Add(
        new System.Uri(urlAddress), "Basic", new System.Net.NetworkCredential(UserName, Password) 
       ); 

       request.Credentials = credentialCache; 

      } 

      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //<== Throws Exception 401 

फ़िडलर प्रमाणीकरण परिणाम

कोई प्रॉक्सी-प्रमाणित हैडर मौजूद है।
WWW-प्रमाणित हैडर मौजूद है: बेसिक दायरे = "उदाहरण"

+0

मुझे नहीं पता कि वर्तमान में .NET का कौन सा संस्करण आप उपयोग कर रहे हैं, लेकिन मैं आपको सुझाव देता हूं कि आपको 'HttpClient' का उपयोग शुरू करना चाहिए;) –

+0

अनुरोध से प्राधिकरण शीर्षलेख की तुलना में अनुरोध से प्राधिकरण शीर्षलेख की तुलना करें 401 वापस नहीं। – CodeCaster

+0

@ कोडकस्टर: मैं फिडलर स्थापित करूंगा और परिणाम पोस्ट करूँगा –

उत्तर

4

संदेश कहते हैं:

कोई प्रॉक्सी-प्रमाणित हैडर मौजूद है।

फिर, वैकल्पिक हल:

... 
string urlAddress = "http://www.google.com"; 
string userName = "user01"; 
string password = "puser01"; 
string proxyServer = "127.0.0.1"; 
int proxyPort = 8081; 

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(urlAddress); 

if (userName != string.Empty) 
{ 
    request.Proxy = new WebProxy(proxyServer, proxyPort) 
    { 
     UseDefaultCredentials = false, 
     Credentials = new NetworkCredential(userName, password) 
    }; 

    string basicAuthBase64 = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(string.Format("{0}:{1}", userName, password))); 
    request.Headers.Add("Proxy-Authorization", string.Format("Basic {0}", basicAuthBase64)); 
} 

using (HttpWebResponse response = (HttpWebResponse) request.GetResponse()) 
{ 
    var stream = response.GetResponseStream(); 
    if (stream != null) 
    { 
     //--print the stream content to Console 
     using (var reader = new StreamReader(stream)) 
     { 
      Console.WriteLine(reader.ReadToEnd()); 
     } 
    } 
} 
... 

मुझे आशा है कि यह मदद करता है।

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