HTTP запрос методом DELETE. Как?

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 551
Баллы
113
Встала задача: отправить HTTP запрос методом DELETE. Я так понимаю, что из коробки доступен только метод POST\GET. Остается только C#? Если да, то подскажите, хоть куда копать или как отправить.

Благодарю :-)

P.S. В C# особо не разбираюсь.
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113

VadymS

Client
Регистрация
27.09.2015
Сообщения
92
Благодарностей
19
Баллы
8
Может кому-то будет полезно...
Сегодня сталкивался с необходимостью отправить DELETE запрос -- просто отправил при помощи POST.
Всё работает. Edit: нихрена не работает:D
Ответ как от "DELETE": HTTP/1.1 204 No Content
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 551
Баллы
113
Может кому-то будет полезно...
Сегодня сталкивался с необходимостью отправить DELETE запрос -- просто отправил при помощи POST.
Всё работает. Edit: нихрена не работает:D
Ответ как от "DELETE": HTTP/1.1 204 No Content
Ясное дело :-)
А Вы пробовали то, что посоветовал rostonix?
Я уже и забыл про эту тему, отпала необходимость. Сам ещё пока не проверял.
 

VadymS

Client
Регистрация
27.09.2015
Сообщения
92
Благодарностей
19
Баллы
8
string sURL ="<HERE GOES YOUR URL>";

WebRequest request =WebRequest.Create(sURL);
request.Method="DELETE";

HttpWebResponse response =(HttpWebResponse)request.GetResponse();


Ну URL отправит так, а вот мне ещё токен авторизации нужно отправлять.

В целом я сниппет протестировал -- тоже без результата
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
есть тут один человек который думаю это осилит, покрайней мере PUT запрос он сделал
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 275
Баллы
113
Мне такой С# сниппет сделали для работы с API от ClaudFlare.

var request = WebRequest.Create("https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/purge_cache");
request.Method = "DELETE";
request.ContentType = "application/json";
request.Headers.Add("X-Auth-Email", "[email protected]");
request.Headers.Add("X-Auth-Key", "c2547eb745079dac9320b638f5e225cf483cc5cfdda41");

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

var response = (HttpWebResponse)request.GetResponse();
response.Close();
И добавить директивы using
using System.IO;
using System.Net;
 
Последнее редактирование:

VadymS

Client
Регистрация
27.09.2015
Сообщения
92
Благодарностей
19
Баллы
8
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 275
Баллы
113
Да я тут не причем. Я тоже не реально благодарен тому человеку который помог мне с этим снипетом. :-)
 
  • Спасибо
Реакции: VadymS

kolllak

Client
Регистрация
16.08.2011
Сообщения
41
Благодарностей
5
Баллы
8
Мне такой С# сниппет сделали для работы с API от ClaudFlare.



И добавить директивы using
кто может помочь модернизировать данный снипет под добавление записи DNS или помочь с составлением через POST?
сам запрос из API:
Код:
$ curl -X POST "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records" \
-H "X-Auth-Email: [email protected]" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"example.com","content":"127.0.0.1","ttl":120}'
мои настройки POST-запроса:
окно1.jpg окно2.jpg
Получаю ошибку:
Код:
{"success":false,"errors":[{"code":6007,"message":"Malformed JSON in request body"}],"messages":[],"result":null}
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
кто может помочь модернизировать данный снипет под добавление записи DNS или помочь с составлением через POST?
Ну, во-первых, данные нужно обернуть в фигурные кавычки, как и показано в примере
Код:
{"type":"A","name":"example.com","content":"127.0.0.1","ttl":120}
Во-вторых, в дополнительных заголовках первой строкой должен быть прописан UserAgent
Код:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
X-Auth-Email: [email protected]
X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41
Content-Type: application/json
 
  • Спасибо
Реакции: kolllak

kolllak

Client
Регистрация
16.08.2011
Сообщения
41
Благодарностей
5
Баллы
8
спасибо, запрос выполнился, однако ругается на индификатор зоны:
Код:
{"success":false,"errors":[{"code":1000,"message":"Invalid zone identifier"}],"messages":[],"result":null}
у меня указан как в примере в доках..
https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records

посмотрел на другом акке через фидлер:
Код:
POST https://www.cloudflare.com/api/v4/zones/14b3006a1106a1269f8f8b127a554618/dns_records HTTP/1.1

{"zone_name":"site.ru","zone_id":"14b3006a1106a1269f8f8b127a554618","type":"A","name":"test.site.ru","content":"100.000.000.000","data":{},"proxied":true,"proxiable":true,"ttl":1,"priority":1}
или я не про ту зону понял?..
да видимо точно не про то, есть там описание зон - это параметры в передаваемых данных, видимо где-то ошибка в синтаксисе либо не зватает параметра какого-то(
пробовал передать как в последнем варианте сначало чисто ид везде поменял, потом сами данные пробовал в таком формате отправить, ошибка та же...
 

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 275
Баллы
113
Сначала надо получить идентификатор зоны сформировав нужный запрос, потом его подставлять.
 
  • Спасибо
Реакции: kolllak

kolllak

Client
Регистрация
16.08.2011
Сообщения
41
Благодарностей
5
Баллы
8
спасибо, разобрался, если кому понадобится, предварительно ид зоны можно получить таким GET запросом:
Код:
$ curl -X GET "https://api.cloudflare.com/client/v4/zones?name=example.com&status=active&page=1&per_page=20&order=status&direction=desc&match=all" \
-H "X-Auth-Email: [email protected]" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json"
в доках есть различные параметры, но я просто почистил ответ регуляркой

а если хотите чтобы трафик на сабдомен сразу был активирован через клоуд то можно передавать данные как они поймались в фидлере:
Код:
{"zone_name":"site.ru","zone_id":"9f91775ecd9b2000000000062dee857b24fa","type":"A","name":"sub.site.ru","content":100.100.100.100","data":{},"proxied":true,"proxiable":true,"ttl":1,"priority":1}
 
Последнее редактирование:

Salomon1

Client
Регистрация
22.04.2014
Сообщения
36
Благодарностей
3
Баллы
8
Привет всем!
Скажите как сделать http DELETE запрос?


в запросе я указываю:
1. ссылку
2. Content-Type: application/x-www-form-urlencoded
3. Юзер агент в котором я авторизовываюсь через API
4. Получить ответ.

Тоже самое как GET, только он должен быть DELETE запрос.
Негде не могу найти как сделать. очень сильно не хватает этой функции в zennoposter.

То, что описано выше в этой теме не работает...
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 182
Баллы
113
Привет всем!
Скажите как сделать http DELETE запрос?


в запросе я указываю:
1. ссылку
2. Content-Type: application/x-www-form-urlencoded
3. Юзер агент в котором я авторизовываюсь через API
4. Получить ответ.

Тоже самое как GET, только он должен быть DELETE запрос.
Негде не могу найти как сделать. очень сильно не хватает этой функции в zennoposter.

То, что описано выше в этой теме не работает...
Оставлю для потомков пример работы самостоятельного кубика C# HttpMethod.DELETE с тем же API от ClaudFlare (удаление домена-зоны https://api.cloudflare.com/#zone-delete-zone).
Для работы нужна версия зенки начиная с 5.17.0.0 (https://help.zennolab.com/en/v5/zennoposter/5.17.0.0/topic722.html#)
C#:
string url = project.Variables["Get_Zapros4_ZoneDelete"].Value; // урл запроса, типа "https://api.cloudflare.com/client/v4/zones/686665f16a4a790663ebd33272660".
string proxy = project.Variables["proxy"].Value; // тут ставим прокси, можно и пустое значение задать, если прокси нет.
string LoginMail = project.Variables["LoginMail"].Value; // почта-логин к сервису.
string APIKey = project.Variables["APIKey"].Value; // API-ключ к сервису.

var response = ZennoPoster.HTTP.Request(ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.DELETE,
url,
"",
"",
proxy,
"",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,
"",
"",
true,
5,
AdditionalHeaders: new []{"X-Auth-Email:" + LoginMail, "X-Auth-Key: " + APIKey}
);
return response;
 

vesb

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

vesb

Client
Регистрация
13.03.2010
Сообщения
139
Благодарностей
18
Баллы
18
Вот PATCH, если кому понадобиться. Спасибо @orka13 за пример

Код:
string url = project.Variables["Zapros"].Value; // урл запроса, типа "https://api.cloudflare.com/client/v4/zones/686665f16a4a790663ebd33272660".
string proxy = ""; // тут ставим прокси, можно и пустое значение задать, если прокси нет.
string LoginMail = project.Variables["LoginMail"].Value; // почта-логин к сервису.
string APIKey = project.Variables["APIKey"].Value; // API-ключ к сервису.
string data = project.Variables["Data"].Value; // данные.
var response = ZennoPoster.HTTP.Request(ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.PATCH,
url,
data,
"",
proxy,
"",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,
"",
"",
true,
5,
AdditionalHeaders: new []{"X-Auth-Email:" + LoginMail, "X-Auth-Key: " + APIKey}
);
return response;
 

Saf

Client
Регистрация
24.05.2015
Сообщения
68
Благодарностей
53
Баллы
18
а если хочу добавить тип данных другой, а не по умолчанию, что нужно сделать? например request.ContentType = "application/json"
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 334
Благодарностей
905
Баллы
113
Подкиньте пожалуйста пример OPTION запроса
 

doc

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

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