IdHTTPでPostデータの送信方法がわかりません。
var
SS:TStringStream;
begin
SS:=TStringStream.Create('');
IdHTTP1.Post('http://***.**/****.php',Memo2.Lines,SS);
Memo1.Text:=SS.DataString;
SS.Free;
end;
これのMemo2に色々な書き方をしているのですが、私が試したページの場合では、「ページ情報が取得できません」となります。要するにPostデータが正しく送れていないみたいなんですね。
それで、Postデータの書式を教えていただきたいのです。
aaa=ccc
bbb=ddd
といった感じではいけないのでしょうか?
どなたかお願いいたします。
どなたかお答えしていただけないでしょうか。
URLが分からないからなんともいえないですが
PostじゃなくてGetじゃない?
よくありがちなので一応確認。
procedure TForm1.Button1Click(Sender: TObject);
var
SS:TStringList;
begin
SS:=TStringList.Create;
IdHTTP1.Host:='http://www.google.co.jp/';
SS.Text:= IdHTTP1.Get('http://www.google.co.jp/search?hl=ja&q=test');
ShowMessage(SS.Text);
SS.Free;
end;
>要するにPostデータが正しく送れていないみたいなんですね。
<?php
print_r($_POST);
?>
のようなテスト用のPHPで試したがきりでは、
aaa=111
bbb=222
で正しく送られていました。
Delphi5 + Indy 9.0.18
回答どうもありがとうございます。
getではありません。だとしたらどうもリクエストの内容で跳ね返されているようです。がんばってみます。
procedure TForm1.Button1Click(Sender: TObject);
var
SS: TStringStream;
begin
SS:=TStringStream.Create('');
IdHTTP1.Post('http://localhost/test.php', Memo2.Lines, SS);
Memo1.Text := SS.DataString;
SS.Free;
end;
でちゃんと動作しましたよ。
# Delphi7, Indy9
test.phpのソースは、
<body>
GET<br>
<?php
print_r($_GET);
?><br>
<hr>
POST<br>
<?php
print_r($_POST);
?><br>
</body>
</html>
です。
結果は、
<html>
<body>
GET<br>
Array
(
)
<br>
<hr>
POST<br>
Array
(
[aaa] => ccc
[bbb] => ddd
)
<br>
</body>
</html>
でした。
たとえば、HTMLでPOSTして動きますか?
動くのであれば、PHPソースは間違っていないと思いますので、プロキシやインターネットセキュリティソフトなどを見直してみてはどうでしょう。
ツイート | ![]() |