[SOLVED] GET через C#, объясните пожайлуста

Protey

Client
Регистрация
09.01.2016
Сообщения
208
Благодарностей
29
Баллы
28
Доброго время суток, в вики есть пример get запроса на C# https://help.zennolab.com/en/v5/zennoposter/5.7/ZennoLab.CommandCenter~ZennoLab.CommandCenter.ZennoPoster~HttpGet.html

Но там не полное описание, может кто-то и понимает сразу что и как, но новичку, который только начинает изучение C# не понятно, такое чувство что тот кто писал думал....а так сойдет, если что сами догадаются...

И вообще, меня самого начала, когда я увидел вики зеннолаба...., возник один вопрос, а по Русски можно, мы что блин в Америке живем чтоль? Вроде на форуме обитает в основном русско говорящие, так какого фига вики зеннолаба только на английском?

Может кто с примером и описание написать как и что прописывать правильно?

get1.jpg get2.jpg

Из вики зеннолаб
Код:
public static string HttpGet(
   string url,
   string proxy,
   string Encoding,
   ResponceType respType,
   int Timeout,
   string Cookies,
   string UserAgent,
   bool UseRedirect,
   int MaxRedirectCount,
   string[] AdditionalHeaders
)

public static string HttpGet(
string url,

// Тут понятно, что надо пописать урл к которому будет гет запрос, к примеру "http://site.ru" - номер на скрине 1

string proxy,
// Тут тоже понятно что надо прописать прокси, к примеру "http://login:[email protected]:1111"

string Encoding,
// Тут я так понимаю прописывается вот так "UTF-8" - номер на скрине 3

ResponceType respType,
// Вот тут мне не понятно
, хоть и дана модель "Type: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType", а как прописать, тот кто составлял вики видимо подумал что догадаются сами..... - я так понимаю это номер на скрине 5

int Timeout,
// Из названия понятно что это таймаут загрузки, который на скрине под номером 4, прописывать цифрами, к примеру 30

string Cookies,
// Это то же понятно их названия, что тут надо прописывать, если они есть, куки переменной без кавычек, или текстом "тут текст куки", а, если нет куки, то просто две кавычки "" - на скрине под номером 15

string UserAgent,
// Тут юзерагент браузера, прописывать так же как в предыдущем описании - на скрине под номером 14

bool UseRedirect,
// Тут я так понимаю спрашивается использовать редирект или нет, ответ может быть только один true - да и false - нет - на скрине под номером 7

int MaxRedirectCount,
// Тут спрашивается какое количество редиректов, прописывать в числовом значении - на скрине под номером 8

string[] AdditionalHeaders
// Это я так понимаю дополнительные заголовки, на сколько я знаю, прописываются они там же где куки - на скрине они под номером 15 / А вот как прописывать в С# ПОНЯТИЯ НЕ ИМЕЮ!.
)

В общем, кому не трудно, и кто не относиться наплевательски к людям, как некоторые, не буду показывать пальцем "...сами догадаются", напишите, пожалуйста с коммнтариями что и как правильно прописывать.

Меня к примеру интересует как правильно прописывать вот это ResponceType respType и вот это string[] AdditionalHeaders и самое главное почему надо так прописывать.
Если ответите, за ранее благодарю!

P.S. накипело...
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 857
Баллы
113

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
И вообще, меня самого начала, когда я увидел вики зеннолаба...., возник один вопрос, а по Русски можно, мы что блин в Америке живем чтоль? Вроде на форуме обитает в основном русско говорящие, так какого фига вики зеннолаба только на английском?
Документацию принято делать на английском языке. Делать на нескольких языках и поддерживать доку сложно и не практично. Особенно с учетом количества обновлений зенки.
// Вот тут мне не понятно, хоть и дана модель "Type: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType", а как прописать, тот кто составлял вики видимо подумал что догадаются сами..... - я так понимаю это номер на скрине 5
Этим параметром задается тип ответа. Этот параметр соответствует на вашем первом скрине параметру под номером 5. Есть несколько вариаций:
  • BodyOnly – запрос вернет только тело ответа, без заголовков;
  • HeaderAndBody – запрос вернет и заголовки, и тело ответа;
  • HeaderOnly – запрос вернет только заголовки;
  • File – запрос вернет файл;
  • FileAndHeaders – запрос вернет файл и заголовки;
В коде этот параметр задается так:

C#:
string url = "[URL]http://mail.ru[/URL]";
string proxy = "";
string encoding = "UTF-8";

ZennoPoster.HttpGet(url, proxy, encoding, ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody);
Можно подключить пространство имен в разделе "Директивы Using" и тогда не нужно будет прописывать полный путь к типу.



После этого в коде можно будет сразу обращаться к перечислению ResponceType:

C#:
var response = ZennoPoster.HttpGet(url, proxy, encoding, ResponceType.FileAndHeaders);
string[] AdditionalHeaders
// Это я так понимаю дополнительные заголовки, на сколько я знаю, прописываются они там же где куки - на скрине они под номером 15 / А вот как прописывать в С# ПОНЯТИЯ НЕ ИМЕЮ!.
)
Да, вы правильно поняли. Это дополнительные заголовки. В метод они передаются в виде массива строк:

C#:
string url = "[URL]http://mail.ru[/URL]";  // URL, на который выполняется запрос
string proxy = "";  // Прокси. Если не используется, то устанавливаем пустую строку.
string encoding = "UTF-8"; //Кодировка
int timeout = 10000; //Таймаут запроса
string cookies = ""; //Куки
string userAgent = ""; //Юзерагент
bool useRedirect = false; //Редеректить ли автоматически запрос при необходимости. Например, когда ответ от сервера с кодом 302 в браузере вас автоматом перенаправит по другой ссылке.
                          //В запросе мы можем этот отключить и нам вернется первоначальный ответ сервера.
int maxRedirectCount = 3; //Максимальное количество редиректов. Для использования UseRedirect должен быть включен.

string[] additionalHeaders = {
    "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Connection: keep-alive"};   // Дополнительные заголовки.

var response = ZennoPoster.HttpGet(url, proxy, encoding, ResponceType.HeaderAndBody, timeout, cookies, userAgent, useRedirect, maxRedirectCount, additionalHeaders);
Вообще, если у вас нет необходимости задавать все эти параметры, то метод можно вызвать указав лишь URL:

C#:
string url = "[URL]http://mail.ru[/URL]"
var response = ZennoPoster.HttpGet(url);
 
Последнее редактирование:

Protey

Client
Регистрация
09.01.2016
Сообщения
208
Благодарностей
29
Баллы
28
  • Спасибо
Реакции: shtift

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 279
Благодарностей
96
Баллы
48
Почему такой код отдает пустоту?
Код:
string url = "[URL]https://mail.ru[/URL]";  // URL, на который выполняется запрос
string proxy = "";  // Прокси. Если не используется, то устанавливаем пустую строку.
string encoding = "UTF-8"; //Кодировка
int timeout = 10000; //Таймаут запроса
string cookies = ""; //Куки
string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"; //Юзерагент
bool useRedirect = true; //Редеректить ли автоматически запрос при необходимости. Например, когда ответ от сервера с кодом 302 в браузере вас автоматом перенаправит по другой ссылке.
                          //В запросе мы можем этот отключить и нам вернется первоначальный ответ сервера.
int maxRedirectCount = 3; //Максимальное количество редиректов. Для использования UseRedirect должен быть включен.
string[] additionalHeaders = {
    "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Connection: keep-alive"};   // Дополнительные заголовки.
var response = ZennoPoster.HttpGet(url, proxy, encoding, ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, useRedirect, maxRedirectCount, additionalHeaders);
return response;
И еще, если директиву using прописать то другой код где парсинг в сишарпе перестает работать и ругается на ошибки
 
Последнее редактирование:

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
Почему такой код отдает пустоту?
Код:
string url = "[URL]https://mail.ru[/URL]";  // URL, на который выполняется запрос
string proxy = "";  // Прокси. Если не используется, то устанавливаем пустую строку.
string encoding = "UTF-8"; //Кодировка
int timeout = 10000; //Таймаут запроса
string cookies = ""; //Куки
string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"; //Юзерагент
bool useRedirect = true; //Редеректить ли автоматически запрос при необходимости. Например, когда ответ от сервера с кодом 302 в браузере вас автоматом перенаправит по другой ссылке.
                          //В запросе мы можем этот отключить и нам вернется первоначальный ответ сервера.
int maxRedirectCount = 3; //Максимальное количество редиректов. Для использования UseRedirect должен быть включен.
string[] additionalHeaders = {
    "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Connection: keep-alive"};   // Дополнительные заголовки.
var response = ZennoPoster.HttpGet(url, proxy, encoding, ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, useRedirect, maxRedirectCount, additionalHeaders);
return response;
И еще, если директиву using прописать то другой код где парсинг в сишарпе перестает работать и ругается на ошибки
Url прописан кривой с тегами форума. Исправьте на:

C#:
var url = "https://mail.ru";
 

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
а если user agent не прописывать, что будет слать?
 
Регистрация
30.11.2020
Сообщения
5
Благодарностей
2
Баллы
3
Коллеги, а если мы с помощью GET запроса скачиваем увесистый фидео файл, как можно организовать какое то подобие прогрессбара скачивания или хоть какое то информирование о происходящем?

Или это только один GET разбивать на несколько более мелких GET запросов и потом внешними средствами склеивать файл?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)