gpt4 book ai didi

delphi - 如何使用 Indy 发送 DELETE 请求?

转载 作者:可可西里 更新时间:2023-11-01 16:25:10 26 4
gpt4 key购买 nike

我尝试了多次在网络上搜索有关如何使用 TidHTTP 发送 DELETE 请求但没有成功的示例...

我正在使用 Delphi Indy 10.0.52。显然 TIdHTTP 对象中没有 Delete 这样的方法。是否可以?我在这里遗漏了一些东西...帮助!

我最终得到了这样的东西(不起作用):

procedure TRestObject.doDelete( deleteURL:String );
var
res : TStringStream;
begin
res := TStringStream.Create('');
http := TidHTTP creation and init...
try
http.Request.Method := IdHTTP.hmDelete;
http.Put( deleteURL, res );
except
on E: EIdException do
showmessage('Exception (class '+ E.ClassName +'): ' + E.Message);
on E: EIdHTTPProtocolException do
showmessage('Protocol Exception (HTTP status '+ IntToStr(E.ErrorCode) +'): ' + E.Message);
on E: EIdSocketError do
showmessage('Socket Error ('+ IntToStr(E.LastError) +'): ' + E.Message);
end;
res.Free;
end;

这是一个对象中的方法,它已经处理 GET、PUT、POST 到使用 django-tastypie 实现的 RESTful Web 服务。我在对象的初始阶段设置了所有权限和身份验证。

最佳答案

顾名思义,TIdHTTP.Put() 强制请求方法为PUT。所以你不能用它来发送其他请求。

10.0.52 是一个很旧的版本,你真的应该升级到最新的 10.6.0,它有一个 TIdHTTP.Delete() 方法:

http.Delete(deleteURL, res);

如果这不是一个选项,那么要使用 10.0.52 发送自定义请求,您将不得不调用 TIdHTTP.DoRequest()。但是,DoRequest() 被声明为 protected 因此您必须使用访问器类来调用它,例如:

type
TIdHTTPAccess = class(TIdHTTP)
end;

TIdHTTPAccess(http).DoRequest('DELETE', deleteURL, nil, res, []);

关于delphi - 如何使用 Indy 发送 DELETE 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com