Как создать PUT запрос в последней версии с помощью ZennoPoster.Http?

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18
Всем привет!
Как известно из списка обновлений, в последней версии был
[+] Добавлен класс ZennoPoster.Http, который позволяет создать любой HTTP запрос PUT/DELETE/PATH и др.
Расскажите, пожалуйста, как этим пользоваться?
Мне нужно создать PUT запрос.
POST/GET научился юзать, а что это за класс ZennoPoster.Http и как им воспользоваться, чтоб создать PUT запрос не могу понять. :bc:
Если можно, приведите пример.

Спасибо! :az:
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 643
Баллы
113

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 643
Баллы
113
в примере по ссылке есть и пример параметра (только гет) и пример ссылки. Контент же передаётся в том формате, в котором этого требует сайт. Может быть стандартно "param1=value1&param2=value", а может быть в виде джейсона, а может быть ещё в каком-нить неведомом варианте. Это надо смотреть по документации, если работа с чьим-то апи, или в сниффере, если нужный запрос отправляется из веба
 
  • Спасибо
Реакции: bizzon

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18
в примере по ссылке есть и пример параметра (только гет) и пример ссылки. Контент же передаётся в том формате, в котором этого требует сайт. Может быть стандартно "param1=value1&param2=value", а может быть в виде джейсона, а может быть ещё в каком-нить неведомом варианте. Это надо смотреть по документации, если работа с чьим-то апи, или в сниффере, если нужный запрос отправляется из веба
Запрос взял со сниффера.
Вот как он выглядит.

https://адрес.com

Куки
Accept-Language: ru_RU,ru
App-Id: 232
Authorization: Bearer LlUuNmU4ZWM2NWQ0ODYwZDZlY2Q2MTYxYWRiZDJhMTJmNjM3ZjM4OTRjYQ==
User-Agent: Android 4.11.1 (GooglePlay;Free)
Signature: c03313aee6bb952353f37d40d3ac8422a494727d
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 33

и контент

email=rraretbfpmbj%40dropmail.me&

Буду очень благодарен, если поможете составить пример, дальше уже смогу самостоятельно нужные запросы делать.
Могу отблагодарить WMZ.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 835
Благодарностей
1 275
Баллы
113
Еще не проверял, не на чем, но вот снипет для DELETE. Думаю по аналогии надо поступать.

Код:
var request = WebRequest.Create("https://api.cloudflare.com/client/v4/zones/" + project.Variables["zone_id"].Value + "/purge_cache");
request.Method = "DELETE";
request.ContentType = "application/json";
request.Headers.Add("X-Auth-Email", project.Variables["email"].Value);
request.Headers.Add("X-Auth-Key", project.Variables["api_key"].Value);

var writer = new StreamWriter(request.GetRequestStream());
writer.Write("{\"purge_everything\":true}");
writer.Flush();
writer.Close();

var response = (HttpWebResponse)request.GetResponse();
response.Close();
 
  • Спасибо
Реакции: bizzon

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 101
Благодарностей
132
Баллы
63
Так как же будет выглядеть этот снипет по-аналогии?
 

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18
Так как же будет выглядеть этот снипет по-аналогии?
Сам так и не разобрался.
Просили добавить эти запросы кубиком, но добавили классом, ну и ладно, даже этому много народу обрадовалось, но никто так и не хочет пример скинуть, даже за деньги :(
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
Сам так и не разобрался.
Просили добавить эти запросы кубиком, но добавили классом, ну и ладно, даже этому много народу обрадовалось, но никто так и не хочет пример скинуть, даже за деньги :(
клик
 

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18
В общем, начал кое-что понимать, но возникла проблема.
В запросе нужно дописывать дополнительные заголовки.

В инструкции написан такой синтаксис:
Код:
 string[] AdditionalHeaders,
Что это за квадратные скобки?
Как мне добавить в запрос параметр, например Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=
 

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18

SoUp1

Client
Регистрация
15.09.2013
Сообщения
146
Благодарностей
47
Баллы
28
В общем, начал кое-что понимать, но возникла проблема.
В запросе нужно дописывать дополнительные заголовки.

В инструкции написан такой синтаксис:
Код:
 string[] AdditionalHeaders,
Что это за квадратные скобки?
Как мне добавить в запрос параметр, например Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=
Пример дополнительных заголовков:
C#:
new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  }
 
  • Спасибо
Реакции: yriy158 и qweqwe5435

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
71
Благодарностей
39
Баллы
18
Наконец-то у меня получилось. Сервер отдал нужный мне ответ:bp:
Путем просмотра других сниппетов и вашей помощи!

Вот пример моего кода, я его закомментил, чтоб интересующимся было легче разобраться.
Говорю сразу, знаний в C# у меня никаких не было, по-этому я нагородил вот это (возможно что-то и лишнее прописал, т.к. оно идет по умолчанию, но он 100% рабочий):

C#:
string token = project.Variables["access_token"].Value; // положить acces token из проекта в переменную token
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PUT, // тип запроса
"https://api.***.com/v2/me/mail/address/", // адрес
"email=rraetbfpmbj%40dropmail.me&", // контент запроса
"application/x-www-form-urlencoded",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, // что получать в ответ
30000, // таймаут
"", // куки
"Android 4.11.1 (GooglePlay;Free)", // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Authorization: Bearer " + token,
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  } // дополнительные заголовки
);
return response; // положить ответ в переменную
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 101
Благодарностей
132
Баллы
63
Не понятно, как включать здесь переменные в кавычки.
Например, этот токен:
string token = project.Variables["access_token"].Value;
добавить в конец адреса
А как вставить переменную в которой контент?
И если не нужны дополнительные поля - нужно ли их вообще писать?
 

Roirise

Client
Регистрация
05.09.2016
Сообщения
68
Благодарностей
6
Баллы
8
Наконец-то у меня получилось. Сервер отдал нужный мне ответ:bp:
Путем просмотра других сниппетов и вашей помощи!

Вот пример моего кода, я его закомментил, чтоб интересующимся было легче разобраться.
Говорю сразу, знаний в C# у меня никаких не было, по-этому я нагородил вот это (возможно что-то и лишнее прописал, т.к. оно идет по умолчанию, но он 100% рабочий):

C#:
string token = project.Variables["access_token"].Value; // положить acces token из проекта в переменную token
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PUT, // тип запроса
"https://api.***.com/v2/me/mail/address/", // адрес
"email=rraetbfpmbj%40dropmail.me&", // контент запроса
"application/x-www-form-urlencoded",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, // что получать в ответ
30000, // таймаут
"", // куки
"Android 4.11.1 (GooglePlay;Free)", // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Authorization: Bearer " + token,
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  } // дополнительные заголовки
);
return response; // положить ответ в переменную
не подскажете, как в этот запрос запихнуть куки из куки контейнера?
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 553
Баллы
113
не подскажете, как в этот запрос запихнуть куки из куки контейнера?
C#:
string token = project.Variables["access_token"].Value; // положить acces token из проекта в переменную token
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PUT, // тип запроса
"https://api.***.com/v2/me/mail/address/", // адрес
"email=rraetbfpmbj%40dropmail.me&", // контент запроса
"application/x-www-form-urlencoded",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, // что получать в ответ
30000, // таймаут
"", // куки
"Android 4.11.1 (GooglePlay;Free)", // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Authorization: Bearer " + token,
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  }, // дополнительные заголовки
project.Profile.CookieContainer   
);
return response; // положить ответ в переменную
 
  • Спасибо
Реакции: Roirise

Roirise

Client
Регистрация
05.09.2016
Сообщения
68
Благодарностей
6
Баллы
8
C#:
string token = project.Variables["access_token"].Value; // положить acces token из проекта в переменную token
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PUT, // тип запроса
"https://api.***.com/v2/me/mail/address/", // адрес
"email=rraetbfpmbj%40dropmail.me&", // контент запроса
"application/x-www-form-urlencoded",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, // что получать в ответ
30000, // таймаут
"", // куки
"Android 4.11.1 (GooglePlay;Free)", // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Authorization: Bearer " + token,
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  }, // дополнительные заголовки
project.Profile.CookieContainer 
);
return response; // положить ответ в переменную
C#:
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PATCH, // тип запроса
"https://site.pl/api/v1/authorized/profile/channels/on", // адрес
"[\"pop3\",\"smtp\"]", // контент запроса
"application/json;charset=UTF-8 application/json; charset=UTF-8",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, // что получать в ответ
30000, // таймаут
"", // куки
project.Variables["useragent"].Value, // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {"" }, // дополнительные заголовки
project.Profile.CookieContainer
);
return response; // положить ответ в переменную
Вот так сделал. Зенка выдает ошибку: http://prntscr.com/qugvqu Версия зенки 5.27.1 на всякий случай
 

kem

Client
Регистрация
29.08.2018
Сообщения
37
Благодарностей
17
Баллы
8
C#:
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PATCH, // тип запроса
"https://site.pl/api/v1/authorized/profile/channels/on", // адрес
"[\"pop3\",\"smtp\"]", // контент запроса
"application/json;charset=UTF-8 application/json; charset=UTF-8",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, // что получать в ответ
30000, // таймаут
"", // куки
project.Variables["useragent"].Value, // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {"" }, // дополнительные заголовки
project.Profile.CookieContainer
);
return response; // положить ответ в переменную
Вот так сделал. Зенка выдает ошибку: http://prntscr.com/qugvqu Версия зенки 5.27.1 на всякий случай
Аналогично
 

kem

Client
Регистрация
29.08.2018
Сообщения
37
Благодарностей
17
Баллы
8
C#:
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PATCH, // тип запроса
"https://site.pl/api/v1/authorized/profile/channels/on", // адрес
"[\"pop3\",\"smtp\"]", // контент запроса
"application/json;charset=UTF-8 application/json; charset=UTF-8",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, // что получать в ответ
30000, // таймаут
"", // куки
project.Variables["useragent"].Value, // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {"" }, // дополнительные заголовки
project.Profile.CookieContainer
);
return response; // положить ответ в переменную
Вот так сделал. Зенка выдает ошибку: http://prntscr.com/qugvqu Версия зенки 5.27.1 на всякий случай
Помогло- cookieContainer: project.Profile.CookieContainer
 

diamlan

Client
Регистрация
14.09.2019
Сообщения
113
Благодарностей
18
Баллы
18
Наконец-то у меня получилось. Сервер отдал нужный мне ответ:bp:
Путем просмотра других сниппетов и вашей помощи!

Вот пример моего кода, я его закомментил, чтоб интересующимся было легче разобраться.
Говорю сразу, знаний в C# у меня никаких не было, по-этому я нагородил вот это (возможно что-то и лишнее прописал, т.к. оно идет по умолчанию, но он 100% рабочий):

C#:
string token = project.Variables["access_token"].Value; // положить acces token из проекта в переменную token
var response = ZennoPoster.HTTP.Request(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PUT, // тип запроса
"https://api.***.com/v2/me/mail/address/", // адрес
"email=rraetbfpmbj%40dropmail.me&", // контент запроса
"application/x-www-form-urlencoded",  // тип контента
"",  // тут можно прокси прописать
"UTF-8", // кодировка
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, // что получать в ответ
30000, // таймаут
"", // куки
"Android 4.11.1 (GooglePlay;Free)", // юзерагент
true, //разрешить редиректы
5, //количество редиректов
    new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Authorization: Bearer " + token,
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  } // дополнительные заголовки
);
return response; // положить ответ в переменную
Щас это актуально? У меня выдает кучу ошибок
 

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