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

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

ibred

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

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

P.S. В C# особо не разбираюсь.
 
Последнее редактирование:
Может кому-то будет полезно...
Сегодня сталкивался с необходимостью отправить DELETE запрос -- просто отправил при помощи POST.
Всё работает. Edit: нихрена не работает:D
Ответ как от "DELETE": HTTP/1.1 204 No Content
 
Может кому-то будет полезно...
Сегодня сталкивался с необходимостью отправить DELETE запрос -- просто отправил при помощи POST.
Всё работает. Edit: нихрена не работает:D
Ответ как от "DELETE": HTTP/1.1 204 No Content
Ясное дело :)
А Вы пробовали то, что посоветовал rostonix?
Я уже и забыл про эту тему, отпала необходимость. Сам ещё пока не проверял.
 
string sURL ="<HERE GOES YOUR URL>";

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

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


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

В целом я сниппет протестировал -- тоже без результата
 
есть тут один человек который думаю это осилит, покрайней мере PUT запрос он сделал
 
Мне такой С# сниппет сделали для работы с 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", "user@example.com");
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
Мне такой С# сниппет сделали для работы с API от ClaudFlare.



И добавить директивы using

кто может помочь модернизировать данный снипет под добавление записи DNS или помочь с составлением через POST?
сам запрос из API:
Код:
Развернуть Свернуть Копировать
$ curl -X POST "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records" \
-H "X-Auth-Email: user@example.com" \
-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}
 
кто может помочь модернизировать данный снипет под добавление записи 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: user@example.com
X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41
Content-Type: application/json
 
  • Оценить
Реакции: kolllak
спасибо, запрос выполнился, однако ругается на индификатор зоны:
Код:
Развернуть Свернуть Копировать
{"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}

или я не про ту зону понял?..
да видимо точно не про то, есть там описание зон - это параметры в передаваемых данных, видимо где-то ошибка в синтаксисе либо не зватает параметра какого-то(
пробовал передать как в последнем варианте сначало чисто ид везде поменял, потом сами данные пробовал в таком формате отправить, ошибка та же...
 
Сначала надо получить идентификатор зоны сформировав нужный запрос, потом его подставлять.
 
  • Оценить
Реакции: kolllak
спасибо, разобрался, если кому понадобится, предварительно ид зоны можно получить таким 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: user@example.com" \
-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}
 
Последнее редактирование:
Привет всем!
Скажите как сделать http DELETE запрос?


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

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

То, что описано выше в этой теме не работает...
 
Привет всем!
Скажите как сделать 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;
 
Вот 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;
 
а если хочу добавить тип данных другой, а не по умолчанию, что нужно сделать? например request.ContentType = "application/json"
 
  • Оценить
Реакции: Jufel

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