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;
>Ciao a tutti
Ciao
>[...]non riesco a fare un "Post"
[...] >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"
[...] >Grazie a tutti
prova a fare dei progetti con esigenze più ristrette
per riuscire ad utilizzare la tecnologia.
Cioè prova a mettere una pagina html semplice con un
form (html ovviamente :) ), online e prova su quel form
a fare le prove di post in maniera da evitare qualsiasi
blocco del sistema che chiami ... insomma penso che
comuinicator o altri abbiano qualche metodo per
impedire questo genere di cose ... se invece è un
servizio fornito a pagamento vedi bene le specifiche
tecniche del servizio prima di fare post ... ti dico
questo perchè
>"Le credenziali non sono corrette"
>"La tua sessione non é piú valida"
mi sembrano più errori di blocco di controlli vari di
sessione fatti dalle pagine chiamate che errori di
reale post mal riuscito ... cmq non ti posso dire di
più in quanto non ho mai fatto post ... al massimo ho
scricato file via idHttp.
>ciao
>erik
Ciao
MassimoB
>
> prova a fare dei progetti con esigenze più ristrette
> per riuscire ad utilizzare la tecnologia.
Si.. visto che le cose semplici non mi riuscivano ho provato con qualcosa di
piú complicato.. tante volte riuscisse :))
> Cioè prova a mettere una pagina html semplice con un
> form (html ovviamente :) ), online e prova su quel form
> a fare le prove di post in maniera da evitare qualsiasi
> blocco del sistema che chiami ... insomma penso che
> comuinicator o altri abbiano qualche metodo per
> impedire questo genere di cose ... se invece è un
> servizio fornito a pagamento vedi bene le specifiche
> tecniche del servizio prima di fare post ... ti dico
> questo perchè
Comunicator+ é un servizio offerto con alice
http://communicator.virgilio.it/
> >"Le credenziali non sono corrette"
> >"La tua sessione non é piú valida"
Si lo pensavo pure io, ma ho provato pure con altre pagine
anche con una che ho fatto io ed un cgi sempre fatto da me.
Attraverso la pagina html tutto funge bene ma con idHttp il post arriva ..
il risultato é "messaggio inviato " ma i dati non arrivano.
(é un cgiChat).
>cmq non ti posso dire di
>più in quanto non ho mai fatto post ... al massimo ho
>scricato file via idHttp.
Grazie comunque.
ciao
erik
perchè non usi un tlist ?
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