使用Delphi调用REST Web API

时间:2016-02-16 19:15:21

标签: rest delphi asp.net-web-api

我有一个ASP.NET MVC Web API,我需要使用Delphi 6调用它。我正在尝试使用Indy组件(版本9.0.18),我正在使用TIdHttp组件。

我正在使用REST方法,如POST添加,PUT更新和DELETE删除记录。我成功添加,更新和获取记录,但我无法成功调用DELETE方法。它引发了一个错误“HTTP / 1.1 400 Bad Request”。

我尝试调试Web API,但它认为请求没有到来,因为它不会在断点处停止。

我使用的Indy版本没有方法DELETE,所以我尝试使用DoRequest方法。

我的代码:

IdHTTP.DoRequest(hmDelete, 'http://localhost/myapp/api/user/1', nil, nil);

如果我使用Fiddler发出请求,那么它可以工作,所以我的Web API运行良好。

1 个答案:

答案 0 :(得分:1)

作为Indy的替代品,我建议您使用"导入类型库..."从项目菜单中选择" Microsoft XML",可用的最高版本(我目前在机器上有版本3到6)。禁用"生成组件包装器",然后使用XMLHTTP组件进行REST调用。 E.g:

uses ActiveX, MSXML2_TLB;

var
  r:XMLHTTP;
begin
  CoInitialize(nil);
  r:=CoXMLHTTP.Create;
  r.open('DELETE','http://localhost/myapp/api/user/1',false,'','');
  //r.setRequestHeader(...
  r.send(EmptyParam);
  if r.status=200 then