Проблема с получением ответа с использованием Delphi, Indy10 и LARAVEL PHP - PullRequest
0 голосов
/ 04 октября 2019

Я создаю LARAVEL PHP API для использования в Delphi 2007. По сути, в Delphi я выполняю POST, а в PHP я проверяю поля. Если проверка не пройдена, мне нужно вернуть код 422 вместе с ошибками проверки (массив).

В Delphi я использую Indy10. В нем у меня есть Клиент типа TIdHTTP.

. Чтобы сделать POST, я делаю:

Client.Post(sFullEndPoint, Request, Response);

Чтобы получить код 422:

Client.ResponseCode;

Toполучить содержимое ответа:

Response.DataString;

В PHP, если я возвращаю только один массив ошибок, как return $ errors Я могу обработать его в Delphi с Response.DataString, проблема в том, что я выиграл 'Не знаю код ответа, потому что он придет 200. Если я возвращаю response ($ errors, 422) в PHP, Delphi не находит в ответе значение $errors.

Мне нужно получить код HTTP и ответтело. Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 04 октября 2019

вы можете установить http код ответа в php как (refrence: 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
...