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);
?>