POSTできない

解決


  2007-07-21 05:03:51  No: 27139

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
といった感じではいけないのでしょうか?
どなたかお願いいたします。


  2007-07-24 23:41:49  No: 27140

どなたかお答えしていただけないでしょうか。


あんこ  2007-07-25 00:12:19  No: 27141

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;


igy  2007-07-25 00:36:38  No: 27142

>要するにPostデータが正しく送れていないみたいなんですね。

<?php
    print_r($_POST);
?>

のようなテスト用のPHPで試したがきりでは、

aaa=111
bbb=222

で正しく送られていました。

Delphi5 + Indy 9.0.18


  2007-07-27 05:26:20  No: 27143

回答どうもありがとうございます。
getではありません。だとしたらどうもリクエストの内容で跳ね返されているようです。がんばってみます。


にしの  2007-07-27 09:19:08  No: 27144

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ソースは間違っていないと思いますので、プロキシやインターネットセキュリティソフトなどを見直してみてはどうでしょう。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加