Method Post (socket)

Delphi

23/09/2006

Galera, estou com uma dúvida em relação ao método POST do (ClientSocket).
Por exemplo (EXEMPLO)
Em relação ao site abaixo:

[url=http://www.zone-h.org/component/option,com_notify/Itemid,89/]http://www.zone-h.org/component/option,com_notify/Itemid,89/[/url]

(observem os Edits lá em baixo)

como poderei fazer para por exemplo, usar o método POST para enviar o que o usuário digitar no programa ? (como se estivesse nessa url, e escrevendo tudo nos edits de lá)

Sei que será +/- assim:

  ClientSocket.Socket.SendText(´POST ´ + algumacoisa +  ´ HTTP/1.1´ + chr(13)+chr(10) + ´Host: ´ + Cs.Host + chr(13)+chr(10) + ´Accept: */*´ + chr(13)+chr(10) + ´Connection: Close´ + chr(13)+chr(10)+chr(13)+chr(10));


mas.. como integra-lo com o site ? o.O
estou perdido...

Alguém tem uma idéia ?

Grato.


Zuera

Zuera

Curtidas 0

Respostas

Zuera

Zuera

23/09/2006

Fiz um teste aqui, mas não deu certo...
fiz 2 forms, e 2 ComboBox (como na página citada acima)
peguei o código HTML dessa página, coloquei em um Memo (chamado de MemoCode)
e coloquei em cada Edit desse código HTML um ´#´ em ordem crescente...
dessa forma:

no primeiro
edit:
segundo edit:
no primeiro combobox:
no segundo combobox:

pronto, feito isso, ao usuário clicar no botão ok, pedi para substituir o que foi digitado nos edits do programa no lugar dos ´´.
e utilizei o método POST

bem... o código é esse.. (mas não deu certo)

procedure TFzoneh.Button1Click(Sender: TObject);
begin
  Cs.Host := ´www.zone-h.org´;
  Cs.Port := 80;
  Cs.ClientType := CtNonBlocking;
  Cs.Active := true;
end;

procedure TFzoneh.CsConnect(Sender: TObject; Socket: TCustomWinSocket);
var
datap:string;
dataa:string;
datab:string;
datac:string;
st:string;
begin
  datap := stringReplace(Memocode.Text,´#´,Eddefacer.Text,[rfReplaceAll]);
dataa := stringReplace(Memocode.Text,´´,Eddomain.Text,[rfReplaceAll]);
  datab := stringReplace(Memocode.Text,´´,Cb.Text,[rfReplaceAll]);
datac := stringReplace(Memocode.Text,´´,Cbu.Text,[rfReplaceAll]);
  with Cs.Socket do
begin
  st := ´/component/option,com_notify/Itemid,89/´;
  Cs.Socket.SendText(´POST ´ + st + datap + ´ HTTP/1.1´ + chr(13)+chr(10) + ´Host: ´ + Cs.Host + chr(13)+chr(10) + ´Accept: */*´ + chr(13)+chr(10) + ´Connection: Close´ + chr(13)+chr(10)+chr(13)+chr(10));
  Cs.Socket.SendText(´POST ´ + st + dataa + ´ HTTP/1.1´ + chr(13)+chr(10) + ´Host: ´ + Cs.Host + chr(13)+chr(10) + ´Accept: */*´ + chr(13)+chr(10) + ´Connection: Close´ + chr(13)+chr(10)+chr(13)+chr(10));
  Cs.Socket.SendText(´POST ´ + st + datab + ´ HTTP/1.1´ + chr(13)+chr(10) + ´Host: ´ + Cs.Host + chr(13)+chr(10) + ´Accept: */*´ + chr(13)+chr(10) + ´Connection: Close´ + chr(13)+chr(10)+chr(13)+chr(10));
  Cs.Socket.SendText(´POST ´ + st + datac + ´ HTTP/1.1´ + chr(13)+chr(10) + ´Host: ´ + Cs.Host + chr(13)+chr(10) + ´Accept: */*´ + chr(13)+chr(10) + ´Connection: Close´ + chr(13)+chr(10)+chr(13)+chr(10));
end;
end;

procedure TFzoneh.CsRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  Mresult.Lines.Add(Socket.ReceiveText);
end;

end.


[b:a802825ad9]Obs.: o ´Cs´ é o ClientSocket.
e o ´Cb´ é o ComboBox.[/b:a802825ad9]

bem... se alguém puder ajudar.. agradeço :D


GOSTEI 0
Zuera

Zuera

23/09/2006

Perguntei a um amigo, e ele me disse o seguinte:

[b:acc1f83cac]• SmartBoy_ & copyleft says:
tem uma ferramenta do indy
• SmartBoy_ & copyleft says:
que bota diretu os dados do post
depos é so dar

idhttp1.post(url, dados_do_post);[/b:acc1f83cac]

sabe algum modo de fazer isso com INDY ? ou com o Socket.. tanto faz
porque nunca trabalhei com ele....

Grato.


GOSTEI 0
POSTAR