C # Пустая строка загрузки WebClient - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь загрузить HTML-строку веб-сайта.Веб-сайт имеет следующий URL:

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

Сначала я попытался сделать простой запрос веб-клиента:

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 голосов
/ 10 октября 2018

Попробуйте 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-контент для этой страницы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...