有人让 JSON 与 TIdHttp 一起工作吗?

PHP 总是在 $_POST 中返回 NULL,我做错了什么吗?

德尔福源码:

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() 将以破坏 JSON 数据的方式对 TStringList 内容进行编码。您需要将JSON数据放入TStream中。 TIdHTTP.Post() 将按原样传输其内容。另外,不要忘记设置 TIdHTTP.Request.ContentType 属性,以便服务器知道您正在发布 JSON 数据。

关于php - Delphi TIdhttp 发布 JSON?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12175952/

10-16 18:17