Newsgroup: it.comp.lang.delphi
Titolo: idHttp e MethodPost

Ciao a tutti
Se dovessi dire che ci ho provato 500 volte  sbaglierei di poco.
Dopo l'ennesima delusione il problema persiste, non riesco a fare un "Post"
con idHttp le ho provate di tutte , con urlEncode come tempo fá mi aveva
suggerito Setec,
e con molti altri metodi trovati nei vari post che si trovano con Google.
Fatto sta che tutti i miei tentativi falliscono, in uno dei miei ultimi
tentativi avevo provato a farmi restituire
un url "snippata" da 
http://snipurl.com/index.php
.
In questo ultimo(forse piú complesso) cercavo di inviare sms attraverso
COMUNICATOR+
il servizio offerto con alice.
I risultati sono:
"Le credenziali non sono corrette"
"La tua sessione non é piú valida"
Io vi posto la funzione che attualmente utilizzo, tante volte qualcuno ci
volesse provare o magari l'ha giá fatto
Comunque , qualsiasi esempio funzionante compreso di URL in modo che lo
possa verificare é ben accetto.
Grazie a tutti
ciao
erik
var
  Form1: TForm1;
  UrlS:String;
implementation
{$R *.dfm}
function TForm1.SendSms(Numero,Testo:String):String;
var
  Data: TIdMultiPartFormDataStream;
begin
  Data:=TIdMultiPartFormDataStream.Create;
  Data.AddFormField('action=','sendsmspreview');
  Data.AddFormField('recipient=',Numero);   //aggiungo i dati da postare
  Data.AddFormField('testo=',Testo);
    with http do
      begin
        try
              //setto il client http
          Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
5.1)';
          ProtocolVersion := pv1_0;
          Request.ContentType :='application/x-www-form-urlencoded';
          Result:=Post(UrlS,Data);   // posto i dati e mi faccio restituire
il risultato
            finally
              Data.Free;
              Disconnect;
      end;
    end;
  end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Urls:='
http://gsmailmd.umail.virgilio.it:8080/supermail/controller?'+
    'username=
Mia...@tin.it
';
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Ts:TstringList;
begin
  try
    Ts:=TstringList.Create;
        Ts.Text:=SendSms(Numero.Text,Messaggio.Text);
      Finally
        //salvo il risultato in un file html
        Ts.SaveToFile('c:\ok.html');
        Ts.Free;
  end;
  end;

erik
	Ciao
	MassimoB
 

scricato  file via idHttp.
Grazie comunque.
ciao
erik

   Data: TIdMultiPartFormDataStream;
perchè non usi un tlist ?

"Balbar" <...@...> ha scritto nel messaggio

In uno degli ultimi esempi che ho trovato ho visto che utilizzavano
TIdMultiPartFormDataStream e sembra migliore certe volteTStringList mi
blocca il programma.
Tu hai esempi funzionanti?
ciao
erik

Ciao a tutti
Ciao
http://www.devarticles.com/c/a/Delphi-Kylix/Simulate-a-Web-Form-POST-Request/
vediti un pò questo articolo ...
non è per il componente indy ma ho dato un'occhiata
(non l'ho letto completamente) e ti può comunque dare
validi input ...
sto facendo altre ricerche :)
	Ciao
	MassimoB
 

sto facendo altre ricerche :)
anche questo penso possa esserti utile ...  
vedi la risposta ;)
http://www.delphipages.com/threads/thread.cfm?ID=110837&G=110837
se la correggi un attimino ottieni un codice del genere
che puoi mettere in un buttonClick (per esempio)
Var
  ResponseStream: TMemoryStream;
  Response, POSTData: TStrings;
  ResponseFileName: String;
begin
  POSTData := TStringList.create;
  ResponseStream := TMemoryStream.Create;
  Response := TStringList.create;
  ResponseFileName := ExtractFilePath(Application.ExeName)
        + 'TempResponse.htm';
  try
    POSTData.text := 'ANOME=' + EditParole.Text
                        + '&TIPCAT=' + URLEncode('%')
                         + '&APROV='
                         + '&lang=ita';
    IdHTTPPost.Request.ContentType:='application/x-www-form-urlencoded';
    IdHTTPPost.Post('
http://www.soloalberghi.com/risultati_ric.php3
',
                    POSTData,
                    ResponseStream);
    ResponseStream.Position := 0;
    Response.LoadFromStream(ResponseStream);
    Response.SaveToFile(ResponseFileName);
    WebBrowserResult.Navigate(ResponseFileName);
  Finally
    Response.Free;
    POSTData.Free;
    ResponseStream.Free;
  End;
end;
questo codice prevede l'esistenza sul form di un
componente ihHttp con nome idHttpPost e di un TEdit con
nome EditParole ... io l'ho provato con l'indirizzo ed
i parametri che vedi e la risposta c'č, anche se si
presenta male ;) (la finestra di errore che ti da č
aperta dal webBrowser e riguarda qualche condice
javascript, nella pagina, che da eccezione per percorsi
relativi vari ... ma non č importante per i fini della
demo ... basta rispondere si :) e vedi il risultato del
tuo post :) nel webBrowser
Ciao MassimoB
 

 vedi la risposta ;)
[CUT]
Grazie :) , appena ho un'attimo lo provo.
ciao
erik