PDA

Visualizza la versione completa : IdHTTP.Post ed invio dati ad una pagina Web


colde
18-05-2006, 17:34
Ciao a tutti,
dovrei inviare alcuni dati da un'applicazione a una pagina html e il codice che uso ora è questo:

var
valori: TStringList;
begin
inherited;
if Connection.IpAddress <> '' then
begin
valori := TStringList.create();
valori.add('F1');
IdHTTP1.Post('http://'+Connection.IpAddress+'/wtActive_keyboard.htm%KEY_F1', valori);
end;
end;

Questo è l'errore:

Exception class EidHTTPProtocolException with message 'HTTP/1.0 501 Not implemented'.

Cosa significa? Da cosa dipende il problema? Per scrupolo ho verificato che da IE funzioni e infatti non ho avuto problemi.

Grazie

alka
18-05-2006, 21:36
Come puoi verificare che da Internet Explorer funzioni un'operazione di POST senza costruirti una pagina apposita per inviare i dati, appunto, in POST?

colde
19-05-2006, 09:24
Perchè la pagina html che invia i dati in post ce l'ho già ed è funzionante. L'errore da cosa dipende?

alka
19-05-2006, 09:43
Originariamente inviato da colde
Perchè la pagina html che invia i dati in post ce l'ho già ed è funzionante. L'errore da cosa dipende?
Mi sono spiegato male. La pagina ce l'hai, ma come puoi essere sicuro che la richiesta fatta da Internet Explorer sia uguale a quella che inoltri tu?

Inoltre, osservando l'indirizzo, vedo comparire un %KEY_F1 che non so come possa essere accettato, visto che - se non ricordo male - il carattere "%" è normalmente seguito dal codice esadecimale del carattere da rappresentare (viene usato quindi per specificare caratteri che normalmente non sarebbero interpretabili nella loro forma naturale, come lo spazio).
:master:

colde
19-05-2006, 10:19
In effetti non posso avere la certezza che i dati che invio da software abbiano la stessa "formattazione" di un post inviato da IE ma non so se ci siano alternative o modi per scoprirlo. Da IE ho un p.d.c. che fa le stesse cose del software in fase di sviluppo, quindi ho preso l'action del form e l'ho inserito come URL nel method POST di Delphi e stessa cosa per i valori da inviare (creando una serie di stringhe composte da "nomevariabile=valore"). Effettivamente non so se il POST invia i dati in questo modo quindi sicurezza non ne ho ma non saprei nemmeno come verificare.

Per quanto riguarda "%KEY_F1" che hai visto nell'indirizzo non è un problema, la maggiorparte delle chiamate sono così; è stato sviluppato in questo modo volontariamente. Ti ricordo che non si tratta di pagine HTML "standard" interpretate da un server "normale" ma create ad hoc e quindi il PC che farà da server è stato istruito appositamente con un firmware personalizzato che accetta questo tipo di chiamate e risponde di conseguenza. In realtà non è proprio un server e nemmeno esattamente un PC, tecnicamente lo è a tutti gli effetti visto che ha lo stesso hardware di base di un PC e come OS monta Linux ma visto esternamente, del PC non ha assolutamente niente.

colde
19-05-2006, 11:49
Dall'NG di google ho trovato un post in cui si dice che i valori da inviare con IdHTTP.Post devono essere formattati come "NomeVariabile=valore" quindi teoricamente quella parte dovrei averla fatta giusta. L'errore che mi ritorna allora da cosa può dipendere?

alka
19-05-2006, 12:03
Originariamente inviato da colde
Dall'NG di google ho trovato un post in cui si dice che i valori da inviare con IdHTTP.Post devono essere formattati come "NomeVariabile=valore" quindi teoricamente quella parte dovrei averla fatta giusta. L'errore che mi ritorna allora da cosa può dipendere?
Nel codice che hai scritto nel primo messaggio, non hai seguito questa forma. :master:

Loading