【问题标题】:Problem getting response content using Delphi, Indy10 and LARAVEL PHP使用 Delphi、Indy10 和 LARAVEL PHP 获取响应内容时出现问题
【发布时间】:2019-10-04 19:52:15
【问题描述】:

我正在构建一个 LARAVEL PHP API 以供 Delphi 2007 使用。 基本上,在 Delphi 中我正在执行 POST,而在 PHP 中我正在验证字段。如果验证失败,我需要返回代码 422 以及验证错误(数组)。

在 Delphi 中,我使用的是 Indy10。其中我有一个类型为TIdHTTP 的客户。

要进行 POST,我会这样做:

Client.Post(sFullEndPoint, Request, Response);

获取代码 422:

Client.ResponseCode;

要获取响应的内容:

Response.DataString;

在 PHP 中,如果我只返回一组错误,如 return $ errors 我可以在 Delphi 中使用 Response.DataString 处理它,问题是我不知道响应代码,因为它会出现 200。 如果我在 PHP 中返回 response ($ errors, 422),Delphi 在响应中找不到 $errors 的值。

我需要获取 HTTP 代码和响应正文。有人可以帮我吗?

【问题讨论】:

    标签: php laravel api delphi indy10


    【解决方案1】:

    您可以在 php 中设置 http 响应代码,例如(参考:https://www.php.net/manual/en/function.http-response-code.php):

    http_response_code(422);
    

    在 laravel 中你也可以这样做:

    return response('Your output string', 200)->header('Content-Type', 'text/plain');
    

    但我建议您将响应作为 json 传递并添加一些有关错误或...的信息:

    $errors = [
        [
            'error_code'=>1312,
            'error_message'=>'name is empty'
        ]
    ];
    return Response::json($errors, 201); // Status code here
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2022-07-06
      • 2011-04-12
      相关资源
      最近更新 更多