2013-06-13 80 views
0

有沒有人有一個純粹的德爾福片段如何使用Delphi執行一個Web POST,只有原生Delphi 2010功能?沒有Indy或其他第三方模塊執行Delphi POST

+0

WinInet的是一個內置的德爾福模塊? –

+3

不是。它是['Windows的一部分]](http://msdn.microsoft.com/en-us/library/windows/desktop/aa383630(v = vs.85).aspx)。 – TLama

回答

1
const chunksize = 512;         //<--neu 

procedure TForm1.Button1Click(Sender: TObject); 
var 
content,data : string; 

accept : string; 
buffer :Pchar; 
hSession,hConnect,hRequest : HINTERNET; 
bytesread:cardinal;           //<--edit 
name,passwort :string; 
begin 
    GetMem(buffer, chunksize);        //<--neu 
    Name:= 'Loginname'; 
    Passwort :='Passwort'; 
    content := 'Content-Type: application/x-www-form-urlencoded'; 
    data := 'v=2&universe=uni34.ogame.de&login='+Name+'&pass='+Passwort+'&button.x=22&button.y=5'; 
    accept :='*/*'; 
    hSession := InternetOpen('MyAgent',INTERNET_OPEN_TYPE_PRECONFIG,nil, nil,0); 
    hConnect := InternetConnect(hSession,'uni34.ogame.de',       //<--edit 
           80,nil,nil,INTERNET_SERVICE_HTTP, 0, 1); 
    hRequest := HttpOpenRequest(hconnect, 
    'POST', 
    'game/reg/login2.php', 
    nil, 
    nil, 
    plpstr(accept), 
    0,1); 



    httpSendrequest(hRequest,pchar(content),length(content),pchar(data),length(data)); 

    //-->neu+edit<--// 
    memo1.lines.clear; 
    repeat 
    FillMemory(buffer,chunksize,0); //0 wegen null-terminiertem string 
    InternetReadFile(hRequest, 
    buffer, 
    chunksize-1, 
    bytesread); 
    memo1.Lines.Text:=memo1.lines.text+Trim(string(buffer)); 
    until bytesread = 0; 

    FreeMem(buffer); 
    //-->bis hier<--// 
end; 

來源: http://www.delphigl.com/forum/viewtopic.php?t=8198

+0

謝謝!我會用這個作爲出發點:) –

相關問題