dlevの回答がうまくいったのですが、ソリューションの実装に問題がありました(「パラメータ '{0}'は空の文字列ではありません」)。 。
私の目標はhtmlを文字列として取得することでしたが、WebリクエストにCookieを追加する必要がありました。
public static string DownloadString(string url, Encoding encoding, IDictionary<string, string> cookieNameValues)
{
using (var webClient = new WebClient())
{
var uri = new Uri(url);
var webRequest = WebRequest.Create(uri);
foreach(var nameValue in cookieNameValues)
{
webRequest.TryAddCookie(new Cookie(nameValue.Key, nameValue.Value, "/", uri.Host));
}
var response = webRequest.GetResponse();
var receiveStream = response.GetResponseStream();
var readStream = new StreamReader(receiveStream, encoding);
var htmlCode = readStream.ReadToEnd();
return htmlCode;
}
}
我々はDLEVの答えからコードを使用している:
var cookieNameValues = new Dictionary<string, string>();
cookieNameValues.Add("varName", "varValue");
var htmlResult = DownloadString(url, Encoding.UTF8, cookieNameValues);
:
これは、あなたが完全なコードを使用する方法ですこれは、クッキーを使用して文字列をダウンロードする機能ですクッキーはHTTPのコンセプトなので、難しいでしょう。この変更を行う必要がある理由はありますか? – dlev
@dlev - WebRequestはuriに基づいてHttpWebRequestを作成します。したがって、自分のWebRequestオブジェクトをモックアップしたり、WebRequestを返す自分のuriを登録したりする場合は、メソッドをHttpWebRequestオブジェクトでしか動作させないようにする必要はありません。 –
'webRequest'の実行時の型は' HttpWebRequest'と理解しています。しかし、 'CookieContainer'にアクセスするには、コンパイル時の型が' HttpWebRequest'である必要があります。また、あなたはHTTPに自分自身を束縛していないと言いますが、その場合、CookieはHTTP構造であるため意味がありません(最初は 'WebRequest'が存在しない理由です)。 – dlev