Rilasciato nuovo FB HTTPClient
Home › Forum › Programmazione IEC 61131 (LogicLab) › Rilasciato nuovo FB HTTPClient
Taggato: HTTPClient
- Questo topic ha 9 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 5 anni, 6 mesi fa da
Rubox.
-
AutorePost
-
Maggio 10, 2018 alle 4:04 pm #44043
Sergio Bertana
Amministratore del forumIl FB HTTPGetPage si è evoluto ora è diventato un vero client HTTP quindi ne abbiamo cambiato il nome in HTTPClient (Estratto manuale). E’ stata aggiunta la possibilità di inviare parametri sia in GET che in POST e di ricevere in risposta pagine di qualsiasi lunghezza, in caso di pagine molto grandi i dati di pagina ricevuti possono essere trasferiti anche su file.
Allego al topic un programma di esempio (Download) con il nuovo FB, nell’esempio viene eseguita la richiesta di una pagina sul sito Altervista, il programma passa in GET o POST i parametri Dividend e Divisor ad uno script PHP che esegue la divisione tra i valori passati. E’ possibile testare il funzionamento dello script direttamente da qui. Se lo script è attivo viene ritornata una pagina con: The result is: 50.
E’ ovvio che si può testare lo script modificando i valori nell’indirizzo del browser ottenendo risultati diversi. Lo scopo del FB è proprio questo appoggiarsi da programma SlimLine su di un servizio web nel cloud per fare eseguire operazioni.
Giugno 25, 2019 alle 2:29 pm #48327Marcello
PartecipanteStò usando con successo la FB HTTPClient e ora che ci sto prendendo gusto, vorrei poter usare questa FB per configurare via HTTP dei dispositivi connessi alla rete, in particolare cambiare l’indirizzo IP, settare dei parametri ecc… Ho richiesto ad un nostro fornitore i comandi per cambiare l’indirizzo IP di alcune sonde (KMTronic) e mi hanno inviato questa serie di comandi (compreso quello di reboot).
Cambio IP:
POST /net_config.htm HTTP/1.1
Host: 192.168.1.199
Connection: keep-alive
Content-Length: 57
Cache-Control: max-age=0
Authorization: Basic YWRtaW46YWRtaW4=
Origin: http://192.168.1.199
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: http://192.168.1.198/net_config.htm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,bg;q=0.8
ip=192.168.1.190&gw=192.168.1.1&sub=255.255.255.0&htpt=80Reboot:
GET /reboot.cgi HTTP/1.1\r\nAuthorization: Basic YWRtaW46YWRtaW4=\r\nAccept: */*\r\n\r\n
Ho configurato l’FB in questo modo:
Cambio IP:
Method: 1
HostAddress: 192.168.1.199
HostName:192.168.1.198
HostPort:80
Page:net_config.htm HTTP/1.1
Request: ip=192.168.1.190&gw=192.168.1.1&sub=255.255.255.0&htpt=80
DBSize:57Reboot:
Method:0
HostAddress: 192.168.1.199
HostName:192.168.1.198
HostPort:80
Page: reboot.cgi HTTP/1.1\r
Request: nAuthorization: Basic YWRtaW46YWRtaW4=\r\nAccept: */*\r\n\r\n
DBSize:61Ho “tradotto” bene?
Giugno 25, 2019 alle 3:14 pm #48330Sergio Bertana
Amministratore del forumVedo un po di idee confuse…
La richiesta di set parametri è una richiesta in POST, quindi Method: 1 è corretto, ma HostAddress e HostName devono essere l’indirizzo IP del server non possono essere diversi… al limite HostName potrebbe essere il nome dell’host nel caso di server multidominio.
In Page devi mettere solo la pagina HTPP/1.1 lo mette in automatico il FB.
In Request hai messo correttamente i dati richiesti, ma DBSize mettilo molto più grande (Metterei 1000).
Vedo nell’esempio che è citato il campo Authorization: Basic YWRtaW46YWRtaW4=, questo a naso mi sembra un campo da passare in header alla richiesta per abilitare il comando di set parametri. Quindi passa al parametro Header:=ADR(Authorization: Basic YWRtaW46YWRtaW4=).
Il resto sembra essere Ok, ma ti consiglio di provare il comando con programmi come Insomnia o Postman, e quando il comando funziona spia con Wireshark cosa passa così da poterlo confrontare con quello che genera l’FB HTTPClient.
Più semplice è il comando di reboot, un semplice comando GET
Method:0
HostAddress: 192.168.1.199
HostName:192.168.1.199
HostPort:80
Page: reboot.cgi
Request: Authorization: Basic YWRtaW46YWRtaW4=Giugno 26, 2019 alle 6:55 am #48336Marcello
PartecipanteSulla FB non vedo il parametro Header, la mia HTTPClient l’ho presa dalla libreria eLLabNetworkLib_B210.plclib.
Giugno 26, 2019 alle 6:56 am #48338Sergio Bertana
Amministratore del forumHo pubblicato la nuova versione di libreria puoi scaricarla dalla sezione download.
Ottobre 19, 2019 alle 7:09 am #50230Rubox
PartecipanteBuongiorno, ho scaricato la libreria eLLabNetworkLib_B300 dalla sezione download. Importo il FB HTTPClient_v1 in LogicLab e se compilo il tutto mi risulta un errore eLLabNetworkLib_B300.plclib (938) error C002 : LD => Invalid token.
Se cancello il FB dal progetto, compila senza errori. Dove sbaglio?
Ottobre 19, 2019 alle 7:11 am #50234Sergio Bertana
Amministratore del forumSembra che hai definito una qualche variabile con il nome “LD” o qualcosa di simile, per capire dovresti inviare alla nostra mail di supporto il tuo progetto Logiclab così possiamo verificare direttamente per capire l’errore.
Ottobre 21, 2019 alle 6:47 am #50258Rubox
PartecipanteBuonasera, il mio problema è che è sufficiente che definisco un nuovo progetto vuoto, importo il FB HTTPClient, creo un programma minimale definendo una variabile “a” e assegnandole un valore arbitrario (quindi un’unica riga di programma del tipo a:=0; ) e compilando in LogicLab mi esce fuori quell’errore, anche senza definire una variabile di tipo HTTPClient.
Se nello stesso progetto importo gli altri FB della libreria non c’è nessun errore, se importo HTTPClient mi da l’errore. E non so come risolvere, o dove sbaglio.
Ottobre 21, 2019 alle 6:55 am #50265Sergio Bertana
Amministratore del forumIl tuo problema nasce dal fatto che non hai messo la spunta sul rispetto delle maiuscole/minuscole nel progetto, di default LogicLab lo lascia non attivo, occorre mettere manualmente la spunta. Troverai una indicazione come questa in molti post del forum.
Nel progetto conviene sempre attivare il tick Case sensivity, nel menù Project-> Options (Screenshot). In questo modo si controlla il case delle lettere nei nomi di variabili e funzioni evitando di dare nomi a variabili che possono essere in contrasto con nomi già predefiniti.
Poi se vuoi un esempio completo di utilizzo puoi fare riferimento alla knowledge relativa.
Ottobre 22, 2019 alle 12:18 pm #50297Rubox
PartecipanteBuongiorno, grazie per la risoluzione del mio errore: c’ho sbattuto la testa per due giorni senza che mi venisse in mente che il rispetto maiuscole/minuscole potesse causare quell’errore.
Adesso mi compila senza problemi e la cosa più importante è che funziona.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.