Newsgroup: it.comp.lang.delphi
Titolo: TIdHTTP.Post

ciao a tutti, qualcuno di voi ha mai utilizzato il metodo Post del
componente IDHTTP di indy??? dovei passare dei parametri di testo molto
lunghi e ovviamente via URL ho dei problemi, ho visto nell'esempio fornito
con indy che esiste la possibilitą di passare questi parametri via POST,
perņ non trovo nessun esempio di qualč la sintassi
Simone

 componente IDHTTP di indy???
<SNIP>
procedure Post(AURL: string; const ASource: TStrings; const
AResponseContent: TStream); overload;
Hai provato con questa?
HTH,
--
Andrea /\/\agni
ICQ#: 174108000

 ha scritto nel messaggio
news:s7kOa.30077$xK6.8...@news1.tin.it...


 i parametri, come vanno scritti dentro ASource??
Prova a passare una TStringList costruita cosě:
strList.Add('nomevar1=valorevar1');
strList.Add('nomevar2=valorevar2');
strList.Add('nomevar...=valorevar...');
Si arrangia lui a sostituire gli a-capo con la e commerciale (&)...


 ha scritto nel messaggio
news:cKkOa.30303$xK6.8...@news1.tin.it...


 da molte righe di testo??
Io cercherei di unificarla su una riga sola... per come sono fatte le Indy
non credo che tu riesca a far passare un terminatore di riga nella richiesta
(credo anche che sarebbe una violazione alle RFC ma su questo non ci
giuro)...


 ha scritto nel messaggio
news:o_kOa.30388$xK6.8...@news1.tin.it...


 lunghezza???
Sinceramente non saprei (la programmazione internet di sicuro non è il mio
forte), cmq ripensandoci ho visto una versione di Post che accetta uno
stream e viene passato così com'è (niente preprocessamento con la
sostituzione degli a capo) quindi credo potresti provare con quello.
Se non hai fretta ti consiglio di provare a postare su libero.internet su
news.marcocantu.it
 non appena saranno stati risolti i problemi col server...
Ciao :-)


Allora, cerco di essere il + chiaro possibile :
non devi mandare i parametri nella richiesta, se guardi gli esempi che ci
sono per gli Indy noterai che per un Post HTTP esiste anche il Content, ed č
proprio in questo che puoi mettere molto di piů.
Sotto ti riporto una procedura che manda addirittura un file XML attraverso
un POST (perfettamente funzionante in una mia applicazione che dialoga con
un servizio ASP) :
procedure TfmHTTPServerMain.Send_Risposta(Address, Reply : string);
var
  Source: TMemoryStream;
  Response: TStringStream;
  Lista : TStringList;
begin
   try
      MMRespResponse.Clear;
      // Set the properties for HTTP
      HTTP.Request.Username := 'MIOUSER';//edUsername.Text;
      HTTP.Request.Password := 'MIAPWD';//edPassword.Text;
      HTTP.Request.ProxyServer := '';//edProxyServer.Text;
      HTTP.Request.ProxyPort := 80;
      HTTP.Request.ContentType := 'text/xml';
      HTTP.InterceptEnabled := True;
      Response := TStringStream.Create('');
      Source := TMemoryStream.Create;
      try
         Lista := TStringList.Create;
         Lista.Text := Reply;
         Lista.SaveToStream(Source);
         HTTP.Post(Address, Source, Response);
         MMRespResponse.Lines.Text := Response.DataString;
      finally
         Lista.Free;
      end;
   finally
      Response.Free;
      Source.Free;
   end;
end;
Da notare che io mando il contenuto di una stringlist
Se devi fare la parte server guardati il demo di HTTP Server, io ho preso
spunto da lě per fare un HTTP server che riceve messaggi XML da MS BizTalk,
e tutto ad oggi funziona correttamente.
Se hai bisogno di qualsiasi chiarimento, batti un colpo.
Ciao

 ha scritto nel messaggio
news:bedsvu$rs6$1...@newsreader.mailgate.org...


 ha scritto nel messaggio
news:bedsvu$rs6$1...@newsreader.mailgate.org...


 end;
Normalmente dovrebbe essere:
var aSl: TStringList;
    aSt: TMemoryStream;
begin
..
  aSl := TStringList.Create;
  try
    // uso di aSl
    aSt := TMemoryStream.Create();
    try
      // uso di aSt, aSl
    finally
      aSt.Free;
    end;
    // ulteriore uso di aSl
  finally
    aSl.Free;
  end;
...
end;
Saluti
Paolo Arosio

 Da notare che io mando il contenuto di una stringlist
E non hai problemi con le terminazioni di riga?
A parte che credo che usare un TStringStream e WriteString sia perfettamente
identico a quello che fa il tuo codice...
cmq ho provato in questi modi:
[il tuo codice]
begin
  HTTP.Request.Clear;
  Send_Risposta('
http://www.emmeit.net/andrea/pagina.asp
', 'nome=Andrea');
end;
[mio codice 1]
var
  valori: TStringList;
begin
  HTTP.Request.Clear;
  valori := TStringList.Create;
  try
    valori.add('nome=Andrea');
    MMRespResponse.Text :=
HTTP.Post('
http://www.emmeit.net/andrea/pagina.asp
', valori);
  finally
    valori.Free;
  end;
end;
[mio codice 2]
var
  valori: TStringStream;
begin
  HTTP.Request.Clear;
  valori := TStringStream.Create('');
  try
    valori.WriteString('nome=Andrea');
    valori.Position := 0;
    MMRespResponse.Text :=
HTTP.Post('
http://www.emmeit.net/andrea/pagina.asp
', valori);
  finally
    valori.Free;
  end;
end;
ma solo [mio codice 1] sembra funzionare...
Avete idee? :-)


 ha scritto nel messaggio
news:bedsvu$rs6$1...@newsreader.mailgate.org...


chiamata??
Simone, č la terza volta che quoti tutto il messaggio di David solo per
aggiungere una riga di testo... 
Ciao :-)
Andrea /\/\agni -- DeD Support Team (
http://www.dedonline.com
)
--- posted by geoForum on 
http://www.delphiedintorni.it


scusa