gpt4 book ai didi

delphi - 如何调用 ASP web api 并从 delphi 2007 返回 JSON

转载 作者:行者123 更新时间:2023-12-05 04:16:26 26 4
gpt4 key购买 nike

我需要调用 ASP Web API 并从 delphi 2007 返回 JSON。我可以在 RAD Studio XE 5 中使用 TRestClient 来完成。我试图将它放在一个 dll 中,以便我可以从我的 delphi 2007 程序中调用它。但没有成功。我如何使用 Delphi 2007 执行此操作?

编辑

这是我在 delphi xe 5 中尝试做的事情

class function TSampleApp.Hello(AModel: TModel): Integer;
var
aRestClient: TRESTClient;
aRestRequest: TRESTRequest;
aRestResponse: TRESTResponse;
aParam: TRESTRequestParameter;
jValue: TJSONValue;
jObject: TJSONObject;
begin
Result := -1;
aRestClient := TRESTClient.Create(nil);
try
aRestResponse := TRESTResponse.Create(nil);
try
aRestRequest := TRESTRequest.Create(nil);
try
try
aRestClient.BaseURL := 'http://localhost:49272/api/test';
aRestRequest.Client := aRestClient;
aRestRequest.Response := aRestResponse;
aRestRequest.Method := rmPOST;
aRestRequest.Resource := 'hello';
aParam := aRestRequest.Params.AddItem;
aParam.Kind := pkREQUESTBODY;
aParam.name := 'helloData';
aParam.Value := TJson.ObjectToJsonString(AModel);

aRestRequest.Execute;

jValue := aRestResponse.JSONValue;
jObject := TJSONObject.ParseJSONValue(jValue.ToString) as TJSONObject;
Result := StrToIntDef((jObject.Get('status').JsonValue as TJSONString).Value, -1);
finally
FreeAndNil(jObject);
FreeAndNil(jValue);
end;
finally
FreeAndNil(aRestRequest);
end;
finally
FreeAndNil(aRestResponse);
end;
finally
FreeAndNil(aRestClient);
end;
end;

此代码在 win32 应用程序中完美运行,但在“aRestResponse := TRESTResponse.Create(nil);”上失败当放入 dll 时。

最佳答案

我没有找到适用于 Delphi 2007 的休息客户端解决方案。我最终为此使用了 Indy。我用 LkJson处理 json。

class function TSampleApp.Hello(AModel: TModel): Integer;
var
idHttp: TIdHTTP;
url, sjsonresponse, sjsonrequest: string;
strRequest: TStrings;
jsonObj: TlkJSONobject;
begin
Result := -1;
url := 'http://localhost:49272/api/test/hello';
idHttp := TIdHTTP.Create;
try
jsonObj := TlkJSONobject.Create;
try
//populate
jsonObj.Add('param1', AModel.param1);
jsonObj.Add('param2', AModel.param2);
sjsonrequest := TlkJSON.GenerateText(jsonObj);
finally
FreeAndNil(jsonObj);
end;

idHttp.Request.Accept := 'application/json';
strRequest := TStringList.Create;
try
strRequest.Values['helloData'] := sjsonrequest;
sjsonresponse := idHttp.Post(url, strRequest);
finally
FreeAndNil(strRequest);
end;

jsonObj := TlkJSON.ParseText(sjsonresponse) as TlkJSONobject;
try
Result := StrToIntDef(VarToStr((jsonObj.Field['status'] as TlkJSONnumber).Value), -1);
finally
FreeAndNil(jsonObj);
end;
finally
idHttp.Free;
end;
end;

此代码也可以在 dll 中运行。

关于delphi - 如何调用 ASP web api 并从 delphi 2007 返回 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778333/

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