2012-10-22 36 views
9

私は、インターネットからHTMLデータをobtaingするには、次のコードを使用します。WebProxyにエラー:プロキシ認証が必要

WebProxy p = new WebProxy("localproxyIP:8080", true); 
p.Credentials = new NetworkCredential("domain\\user", "password"); 
WebRequest.DefaultWebProxy = p; 
WebClient client = new WebClient(); 
string downloadString = client.DownloadString("http://www.google.com"); 

しかし、次のエラーが出演している:「プロキシ認証が必要」。 デフォルトのプロキシ設定がない特別なアカウントのWindowsサービスからコードが実行されるため、デフォルトのプロキシを使用できません。 私はコード内のすべてのプロキシ設定をspecidyしたいと思います。 このエラーを解決する方法を教えてください。

+1

は、ドメインを削除しよう\ \ part( 'WebClient'を' using() 'ステートメントで' IDisposable'を実装しているので覚えておいてください) – jwaliszko

答えて

18

このコードを試してみては私のために働いた:

IWebProxy defaultWebProxy = WebRequest.DefaultWebProxy; 
defaultWebProxy.Credentials = CredentialCache.DefaultCredentials; 
client = new WebClient 
    { 
     Proxy = defaultWebProxy 
    }; 
string downloadString = client.DownloadString(...); 
+0

'WebRe quest.DefaultWebProxy = p'で十分です – jwaliszko

+0

WebRequest.Create()を使用している場合、そしてWebRequest.GetResponse()を呼び出した後であれば、あなたは正しいでしょう。しかし、この場合、WebClientを使用してプロキシが同じでないようにリクエストしています。 – 2GDev

+2

実際に 'DownloadString'メソッドは内部的に' WebRequest.Create() 'で作成された' WebRequest'オブジェクトを使用します。プロキシが 'WebClient'オブジェクトに特に設定されていない場合、そのような' WebRequest'オブジェクトは 'WebRequest.DefaultWebProxy = p'ステートメントで設定された' WebRequest.InternalDefaultWebProxy'プロパティから取得したプロキシを使用します。 – jwaliszko

1

WebProxy p = new WebProxy("localproxyIP:8080", true); 
p.Credentials = new NetworkCredential("domain\\user", "password"); 
WebRequest.DefaultWebProxy = p; 
WebClient client = new WebClient(); 
**client.Proxy = p;** 
string downloadString = client.DownloadString("http://www.google.com"); 
39

この..あなたはWebClient.Proxyプロパティを設定するためにきた

var transferProxy = new WebProxy("localproxyIP:8080", true); 
transferProxy.Credentials = new NetworkCredential("user", "password", "domain"); 
var transferRequest = WebRequest.Create("http://www.google.com"); 
transferRequest.Proxy = transferProxy; 
HttpWebResponse transferResponse = 
    (HttpWebResponse)transferRequest.GetResponse(); 
System.IO.Stream outputStream = transferResponse.GetResponseStream(); 
+3

素晴らしい!これはすべてのWebClientサンプルの一部である必要があります。 –

関連する問題