Scarica una pagina o file da Internet.
Sintassi
EH_WEB * webHttpReq( CHAR * pszUrl,
CHAR * pszReq,
void * (*funcNotify)(EH_WEB *,EN_MESSAGE cmd,LONG Info,void *),
BOOL bAsync,
INT iTimeoutSec,
EN_WPA enWpa);
Parametri
- pszUrl
Indirizzo Internet
- pszReq
Richiesta GET,POST,HEAD
- funcNotify
Funzione che riceve le notifiche
- bAsync
FALSE la funzione ritorna quando la pagina è pronta.
TRUE la funzione ritorna subito e viene notificato a funcNotify quando la pagina è stata scaricata.
- iTimeoutSec
Numero di secondi di attesa timeout. 0 = 10 secondi di default
- enWpa
0 o WPA_TLS se si vuole una richiesta TLS
Valori di ritorno
Ritorna la struttura EH_WEB valorizzata.
Commenti
La funzione esegue una download di una pagina internet con protocollo http: il risultato viene inserito all'interno della struttura allocata di ritorno EH_WEB.
La struttura viene sempre ritornata: se la richiesta va a buon fine psWeb->enError è uguale a 0 e la pagina/file viene allocata in psWeb->pData.
La richiesta può essere di tipo sincrono o asincrono.
// Nuovo sistema sincrono
EH_WEB *psWeb;
psWeb=webHttpReq(szUrl,"GET",NULL,false,0,0);
if (!psWeb->sError.enCode) { // Leggi pagina caricata }
webHttpReqFree(psWeb);
Uso Asincrono
In caso di uso asincrono la funzione ritorna immediatamente.
La funzione funcNotify associata viene chiamata diverse volte con valori di EN_MESSAGE differenti per permettere di seguire lo scaricamento della pagina.
L'ultimo messaggio inviato è WS_CLOSE sia che il caricamento sia andato a buon fine oppure no.
// Funzione per prendere il valore di ritonro in modo Asincrono
static void * _webUpdateControl(EH_WEB *psWeb,EN_MESSAGE enMess,LONG info ,void *ptr) {
EH_JSON * psJson;
BYTE *pMode;
SINT iMode=0;
if (enMess!=WS_CLOSE) return NULL;
if (psWeb->enError) {
printf("## errore: %d" CRLF,psWeb->enError);
return NULL;
}
// Valore in psWeb->pData .. esempio
psJson=jsonCreate(psWeb->pData,NULL);
.
.
.
psJson=jsonDestroy(psJson);
return NULL;
}