C#空WebClient下载字符串

时间:2018-10-08 12:43:27

标签: c# wpf

我正在尝试下载网站的html字符串。该网站有以下网址:

https://www.gastrobern.ch/de/service/aus-weiterbildung/wirtekurs/234/?oid=1937&lang=de

首先,我尝试执行一个简单的WebClient请求:

var wc = new WebClient();
string websitenstring = "";
websitenstring = wc.DownloadString("http://www.gastrosg.ch/default.asp?id=3020000&siteid=1&langid=de");

但是,websiteString为空。然后,我读了一些帖子,我还必须发送一些附加的标头信息:

var wc = new WebClient();
string websitenstring = "";
wc.Headers[HttpRequestHeader.Accept] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
wc.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate, br";
wc.Headers[HttpRequestHeader.AcceptLanguage] = "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7";
wc.Headers[HttpRequestHeader.CacheControl] = "max-age=0";
wc.Headers[HttpRequestHeader.Host] = "www.gastrobern.ch";
wc.Headers[HttpRequestHeader.Upgrade] = "www.gastrobern.ch";
wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36";

websitenstring = wc.DownloadString("https://www.gastrobern.ch/de/service/aus-weiterbildung/wirtekurs/234/?oid=1937&lang=de");

我尝试了这个,但是没有答案。然后,我也尝试设置一些cookie:

wc.Headers.Add(HttpRequestHeader.Cookie,
          "CFID=10609582;" +
          "CFTOKEN=32721418;" +
          "_ga=GA1.2.37" +
          "_ga=GA1.2.379124242.1539000256;" +
          "_gid=GA1.2.358798732.1539000256;" +
          "_dc_gtm_UA-1237799-1=1;");

但是这也不起作用。我还发现,浏览器以某种方式执行多个请求,而我的C-Sharp应用程序仅执行一个并显示第一个响应标头。 enter image description here

但是我不知道如何提出跟进请求。我很感谢每一个答案。

1 个答案:

答案 0 :(得分:1)

改为尝试HttpClient

这是一个使用方法的例子

public async static Task<string> GetString(string url)
{
    HttpClient client = new HttpClient();
    // Way around to avoid Deadlock
    HttpResponseMessage message = await client.GetAsync(url).ConfigureAwait(false);
    return await message.Content.ReadAsStringAsync().ConfigureAwait(false);
}

调用此方法

string dataFromServer = GetString("https://www.gastrobern.ch/de/service/aus-weiterbildung/wirtekurs/234/?oid=1937&lang=de").Result;

我在这里选中dataFromServer拥有该页面的HTML内容