是否可以在TIdHTTPServer(Indy 9,Delphi 7)中处理PUT和DELETE请求?
我已经尝试过OnCommandGet,但是它只能处理GET和POST请求。
我也尝试过OnCommandOther事件。它处理PUT和DELETE方法,但无法访问已发送的数据。
我做错了什么?
有可能吗?是。然而,TIdHTTPServer
在印第安纳波利斯9只解析HEAD
,GET
并POST
请求,并且仅当OnCommandGet
事件被分配。如果OnCommandGet
未分配事件,或者接收到其他请求,则根本TIdHTTPServer
不解析该请求(确定请求类型的第一行除外),OnCommandOther
而是触发事件。正如您所注意到的,该事件中没有提供TIdHTTPRequestInfo
和TIdHTTPResponseInfo
参数,因此您必须自己手动读取和解析整个请求,并自己发送适当的回复,并AThread.Connection
根据需要使用套接字I / O。阅读RFC 2616以了解HTTP规范。
在Indy 10中对此进行了更改,在该版本中TIdHTTPServer
DOES为您处理了所有的解析,答复和套接字I / O,并且所有OnCommand...
事件都具有TIdHTTPRequestInfo
和TIdHTTPResponseInfo
参数。
在未来的版本(最有可能直到印11),新的OnCommand...
事件将被添加单个请求(OnCommandPut
,OnCommandDelete
,等),因此他们不都通过具有漏斗OnCommandGet
或OnCommandOther
了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句