Delphi Tidhttp Post JSON?

кто-нибудь получает JSON для работы с TIdHttp ?

PHP всегда возвращает NULL в $_POST, Я делаю что-то неправильно ?

Delphi источник:

http := TIdHttp.Create(nil);
http.HandleRedirects := True;
http.ReadTimeout := 5000;
http.Request.ContentType := 'application/json';
jsonToSend := TStringStream.Create('{"name":"Peter Pan"}');
jsonToSend.Position := 0;
Memo1.Lines.Text := http.Post('http://www.website.com/test.php', jsonToSend);
jsonToSend.free;
http.free;

в PHP источник:

<?php
$value = json_decode($_POST);
var_dump($value);
?>

2 ответов


вы не можете использовать TStringList для публикации данных JSON. TIdHTTP.Post() закодирует TStringList содержание таким образом, что ломает данные JSON. Вам нужно поместить данные JSON в . TIdHTTP.Post() будет передавать его содержимое как есть. Кроме того, не забудьте установить TIdHTTP.Request.ContentType свойство, чтобы сервер знал, что вы публикуете данные JSON.


вам нужно определить переменную post, попробуйте этот код (я добавил" json " var в ваш код):

Delphi код:

http := TIdHttp.Create(nil);
http.HandleRedirects := true;
http.ReadTimeout := 5000;
jsonToSend := TStringList.create;
jsonToSend.Text := 'json={"name":"Peter Pan"}';
Memo1.Lines.Text := http.Post('http://www.website.com/test.php', jsonToSend);
jsonToSend.free;
http.free;

в PHP источник:

<?php
$value = json_decode($_POST['json']);
var_dump($value);
?>