Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    Connessione che si disattiva al cambio di form

    Ciao a tutti,
    non riesco a capire da cosa può dipendere il problema ma ogni volta che da un form mi connetto tramite IdHTTP e successivamente carico un diverso form, la connessione viene persa. Anzi, a dirla tutta apro il form di connessione, attivo il collegamento e chiudo la finestra; clicco su un'altra form per verificare che la connessione sia ancora attiva e mi dice che non lo è ma se riapro il form iniziale per attivare la connessione nuovamente, me la ritrovo ancora attiva! Il nome dell'IdHTTP è sempre lo stesso quindi il componente è uno solo ma per qualche strano motivo non funziona correttamente.

    Sapete dirmi cosa può essere?

    Oltre a questo problema, quando tento di inviare dei valori mi ritorna il messaggio di errore "unknown protocol"

    Questo è il codice:
    valori := TStringList.create();
    valori.add('hh=20');
    valori.add('mm=20');
    valori.add('ss=20');
    url := '%SET_TIME';
    IdHTTP1.Post(url, valori);

    L'URL che devo usare è l'indirizzo ip assegnato e in più "%SET_TIME" finale (come url ho provato anche ad assegnare l'ip seguito da "%SET_TIME" ma non è cambiato niente). Può essere questo il problema?
    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Sbaglierò, ma i comandi che stai cercando di inviare non mi sembrano che facciano parte del protocollo HTTP... :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    ma errori non me ne da durante la compilazione e comunque POST fa parte di HTTP.
    Per quanto riguarda gli altri problemi?
    Inizialmente usavo IdTCPClient ma non trovando nulla che potesse inviare dei valori tramite POST, ho optato per HTTP. E' corretto? Il mio scopo è dialogare con una macchina tramite HTTP e inviare i comandi da remoto tramite POST.
    www.beppegrillo.it
    Il blog di Beppe!!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    ma errori non me ne da durante la compilazione e comunque POST fa parte di HTTP.
    Sì, ma è ciò che invii tramite POST che mi preoccupa.
    Ad esempio, %SET_TIME non mi sembra un valore accettabile da parte del protocollo che, se non ricordo male, normalmente si aspetta di ricevere una locazione, un URL ad esempio, per individuare cosa restituire.

    Originariamente inviato da colde
    Per quanto riguarda gli altri problemi?
    Il problema è uno, al momento, cioè l'errore unknown protocol.
    Temo che la periferica con cui stai colloquiando non supporti il protocollo HTTP.

    Originariamente inviato da colde
    Inizialmente usavo IdTCPClient ma non trovando nulla che potesse inviare dei valori tramite POST, ho optato per HTTP. E' corretto? Il mio scopo è dialogare con una macchina tramite HTTP e inviare i comandi da remoto tramite POST.
    Ma questa "macchina" che cos'è? Un PC? Un dispositivo di diversa natura? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Attualmente il "dispositivo" è una specie di PC che viene usato durante le gare sportive per memorizzare i tempi degli atleti. Ora, visto che questo "PC" è un prototipo e ce n'è solo uno per il momento, non potendolo usare ho un emulatore installato in locale che si comporta come se fosse il box (il box sarebbe il "PC"). Questo box dialoga tramite TCP/HTTP e collegandomi all'indirizzo IP di questo box con IE, posso accedere al suo P.d.C. e controllarlo da remoto. Quello che devo fare io è replicare questo P.d.C. con un software ed è quello che sto cercando di fare.

    Quel comando "%SET_TIME" dovrebbe essere inviato al box per modificare alcuni paramentri e per farlo da P.d.C. mi basta inserire l'indirizzo ip seguito da quel comando e via POST vengono inviati i nuovi paramentri.

    Tu parli di URL ma un indirizzo IP è un URL fino a prova contraria. Non capisco cosa ci possa essere di sbagliato. A menochè io debba usare il TCPClient ma non saprei come inviare dei valori tramite POST, esiste questa possibilità?

    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    Quel comando "%SET_TIME" dovrebbe essere inviato al box per modificare alcuni paramentri e per farlo da P.d.C. mi basta inserire l'indirizzo ip seguito da quel comando e via POST vengono inviati i nuovi paramentri.
    Ribadisco: siamo sicuri che il protocollo da utilizzare sia HTTP?
    E' scritto così anche nella documentazione del dispositivo?

    Originariamente inviato da colde
    Tu parli di URL ma un indirizzo IP è un URL fino a prova contraria. Non capisco cosa ci possa essere di sbagliato.
    Un indirizzo IP non è un URL, è un indirizzo IP.

    Originariamente inviato da colde
    A menochè io debba usare il TCPClient ma non saprei come inviare dei valori tramite POST, esiste questa possibilità?
    Non puoi mica andare a caso.
    Leggi la documentazione del dispositivo per verificare qual è il protocollo da utilizzare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Il protocollo è TCP e i valori li devo inviare tramite HTTP/POST. C'è un comando TCP che posso usare per l'invio di questi valori?
    www.beppegrillo.it
    Il blog di Beppe!!

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da colde
    Il protocollo è TCP e i valori li devo inviare tramite HTTP/POST. C'è un comando TCP che posso usare per l'invio di questi valori?
    Continuo a non riuscire a capire. HTTP è un protocollo basato su TCP.
    Puoi fare un esempio, seguendo la documentazione, di un pacchetto di dati che deve essere inviato? Prova a riportare la parte della documentazione che specifica come il comando deve essere inviato, altrimenti - non conoscendo questa informazione - non posso dirti come fare.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Non capisco, essendo HTTP un protocollo di TCP, perchè quando gli invio i valori mi dice protocollo sconosciuto? L'errore non è dell'emulatore o del box ma proprio di Delphi quando raggiunge l'istruzione IdHTTP.Post.

    Nel manualetto che ho ora a disposizione non ci sono riferimenti al protocollo da usare, è un'info avuto direttamente dal tecnico che ha sviluppato il prototipo. Ti posto qui il form html che visualizzo con IE collegamndomi all'ip del box, magari può esserti d'aiuto a capire il mio problema:

    <form action="wtActiveSettings.html%SET_TIME">
    <input name="hour" value="hh" size="2" maxlength="2" align="left" type="text"> : <input
    name="minutes" value="mm" size="2" maxlength="2" align="left"
    type="text"> : <input name="seconds" value="ss" size="2" maxlength="2"
    align="left" type="text"> <input value="[ Set new Time ]"
    type="submit">
    </form>
    www.beppegrillo.it
    Il blog di Beppe!!

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Se vuoi sfruttare quel form per impostare il dispositivo, in effetti devi inviare una richiesta HTTP che sia identica a quella che un comune browser invierebbe visualizzando la pagina.

    L'URL di destinazione, quindi, equivale a wtActiveSettings.html%SET_TIME, come definito nella action del form in esame.

    In secondo luogo, il tag <form> è sprovvisto dell'attributo method con l'indicazione del metodo POST, quindi, in realtà, l'operazione da fare è una GET (verifica se il componente TIdHTTP dispone dell'omonimo metodo).

    In sostanza, devi eseguire una operazione di GET che abbia come URL qualcosa del tipo:
    codice:
    wtActiveSettings.html%SET_TIME?hh=00&mm=00&ss=00
    sostituendo agli "00" i valori da impostare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.