Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

idHttp e MethodPost

84 views
Skip to first unread message

erik

unread,
Apr 8, 2004, 6:03:25 PM4/8/04
to
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;


MassimoB

unread,
Apr 9, 2004, 6:04:12 AM4/9/04
to
"erik" nel precedente post ha scritto:

>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

erik

unread,
Apr 9, 2004, 6:48:53 AM4/9/04
to

"MassimoB" <noS...@lamiaemail.it> ha scritto nel messaggio

>
> 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

Balbar

unread,
Apr 9, 2004, 4:37:15 PM4/9/04
to
> function TForm1.SendSms(Numero,Testo:String):String;
> var
> Data: TIdMultiPartFormDataStream;

perchè non usi un tlist ?


erik

unread,
Apr 10, 2004, 5:29:24 AM4/10/04
to

"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


MassimoB

unread,
Apr 10, 2004, 5:52:28 AM4/10/04
to
"erik" nel precedente post ha scritto:

>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

MassimoB

unread,
Apr 10, 2004, 7:51:41 AM4/10/04
to
"MassimoB" nel precedente post ha scritto:


>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


erik

unread,
Apr 10, 2004, 12:55:49 PM4/10/04
to

"MassimoB" <noS...@lamiaemail.it> ha scritto nel messaggio
>
>
> >sto facendo altre ricerche :)
>
> anche questo penso possa esserti utile ...
> vedi la risposta ;)
[CUT]
Grazie :) , appena ho un'attimo lo provo.
ciao
erik


0 new messages