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

  • Автор темы Автор темы qweqwe5435
  • Дата начала Дата начала

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
83
Реакции
44
Баллы
18
Всем привет!
Как известно из списка обновлений, в последней версии был
[+] Добавлен класс ZennoPoster.Http, который позволяет создать любой HTTP запрос PUT/DELETE/PATH и др.

Расскажите, пожалуйста, как этим пользоваться?
Мне нужно создать PUT запрос.
POST/GET научился юзать, а что это за класс ZennoPoster.Http и как им воспользоваться, чтоб создать PUT запрос не могу понять. :bc:
Если можно, приведите пример.

Спасибо! :az:
 
в примере по ссылке есть и пример параметра (только гет) и пример ссылки. Контент же передаётся в том формате, в котором этого требует сайт. Может быть стандартно "param1=value1&param2=value", а может быть в виде джейсона, а может быть ещё в каком-нить неведомом варианте. Это надо смотреть по документации, если работа с чьим-то апи, или в сниффере, если нужный запрос отправляется из веба
 
  • Оценить
Реакции: bizzon
в примере по ссылке есть и пример параметра (только гет) и пример ссылки. Контент же передаётся в том формате, в котором этого требует сайт. Может быть стандартно "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.
 
Еще не проверял, не на чем, но вот снипет для 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
Так как же будет выглядеть этот снипет по-аналогии?
 
Так как же будет выглядеть этот снипет по-аналогии?
Сам так и не разобрался.
Просили добавить эти запросы кубиком, но добавили классом, ну и ладно, даже этому много народу обрадовалось, но никто так и не хочет пример скинуть, даже за деньги :(
 
Сам так и не разобрался.
Просили добавить эти запросы кубиком, но добавили классом, ну и ладно, даже этому много народу обрадовалось, но никто так и не хочет пример скинуть, даже за деньги :(
клик
 
В общем, начал кое-что понимать, но возникла проблема.
В запросе нужно дописывать дополнительные заголовки.

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

В инструкции написан такой синтаксис:
Код:
Развернуть Свернуть Копировать
 string[] AdditionalHeaders,
Что это за квадратные скобки?
Как мне добавить в запрос параметр, например Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=
Пример дополнительных заголовков:
C#:
Развернуть Свернуть Копировать
new[] {
     "Device-Id: eyJhaWQiOiIzYTMyYzg2OTE4Mjc4MDI0IiwiaSI6Ijg2NzA2NDA2MDU4MzIyNCIsInMiOiI4NjkxODI3ODAyNDNhMzJjIn0=",
     "Connection: keep-alive",
     "Accept-Encoding: gzip, deflate"
  }
 
  • Оценить
Реакции: yriy158 и qweqwe5435
Наконец-то у меня получилось. Сервер отдал нужный мне ответ: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; // положить ответ в переменную
 
Не понятно, как включать здесь переменные в кавычки.
Например, этот токен:
string token = project.Variables["access_token"].Value;
добавить в конец адреса
А как вставить переменную в которой контент?
И если не нужны дополнительные поля - нужно ли их вообще писать?
 
Наконец-то у меня получилось. Сервер отдал нужный мне ответ: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; // положить ответ в переменную
не подскажете, как в этот запрос запихнуть куки из куки контейнера?
 
не подскажете, как в этот запрос запихнуть куки из куки контейнера?
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
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 на всякий случай
 
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 на всякий случай
Аналогично
 
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
 
Наконец-то у меня получилось. Сервер отдал нужный мне ответ: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; // положить ответ в переменную
Щас это актуально? У меня выдает кучу ошибок
 

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