Кто-нибудь получает 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); ?>
Вы не можете использовать TStringList
для публикации данных JSON. TIdHTTP.Post()
будет кодировать содержимое TStringList
способом, который разбивает данные JSON. Вам нужно поместить данные JSON в TStream
. 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); ?>