Кто-нибудь получает 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); ?>