Jeg er igang med at lære lidt om POST/GET i Delphi. Jeg har kigget lidt på http://www.delphi3000.com/articles/article_805.asp
Men det vil dog ikke virke. Jeg har lavet et script på www.taj-web.dk/postget.php som skriver det den får fra POST til en fil.
Meget af koden er fra Delphi3000 artiklen..
Hej,
Jeg har lavet lidt om på unit'en så den nuk kan connect'e, sende og modtage korrekt.
Der var fejl i det at du aldrig fik lov til at sende noget (men kig koden i gennem og se om du kan forstå det).
Håber det hjælper dig, ellers spørger du bare.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
private
FHeader : String;
FBody : String;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function HTTPTran(St : String) : String;
var i : Integer;
begin
Result:='';
for i:=1 to length(St) do
if St[i] in ['a'..'z','A'..'Z','0','1'..'9'] then
Result:=Result+St[i]
else if St[i]=' ' then
Result:=Result+'+'
else
Result:=Result+'%'+IntToHex(Byte(St[i]),2);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// sæt standard header.
FHeader := 'Content-Type: application/x-www-form-urlencoded'#10+
'User-Agent: Udvikleren.dk support'#10+
'Host: http://taj-web.dk'#10+
'Connection: Keep-Alive'#10;
// sæt de data som skal post'es til serveren.
FBody := 'Name='+HTTPTran('Michael')+'&'+
'Address='+HTTPTran('Udvikleren i danmark')+'&'+
'Email='+HTTPTran('john@doe.dk') +'&'+
'B1=Submit'+#10;
// sæt "body" længden (størrelsen på de data som du sender).
FHeader := FHeader+'Content-Length: '+IntToStr(Length(FBody))+#10+#10;
// sæt POST informationerne
FHeader := 'POST /postget.php HTTP/1.0'+#10+FHeader;
ClientSocket1.Open;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
// connected, så nu sender vi data!
Socket.SendText(FHeader+FBody);
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Response : String;
begin
// Svar modtaget fra serveren.
Response := Socket.ReceiveText;
ShowMessage('Svar:'+#10#13+Response);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Host := 'www.taj-web.dk';
ClientSocket1.Port := 80;
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('Disconnected');
end;
end.
/Michael.