7

JSON を取得して TIdHttp を操作する人はいますか?

PHP は常に NULL を返します$_POST。何か問題がありますか?

デルファイのソース:

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

2 に答える 2

9

TStringListを使用して JSON データを投稿 することはできません。JSON データを壊すような方法でコンテンツTIdHTTP.Post()をエンコードします。TStringList代わりに JSON データを に入れる必要がありますTStreamTIdHTTP.Post()その内容をそのまま送信します。TIdHTTP.Request.ContentTypeまた、 JSON データを送信していることをサーバーが認識できるように、プロパティを設定することを忘れないでください。

于 2012-08-30T15:20:02.627 に答える
3

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);
?>
于 2012-08-29T11:51:22.633 に答える