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.
EH_WEB *psWeb;
psWeb=webHttpReq(szUrl, "GET" ,NULL, false ,0,0);
if (!psWeb->sError.enCode) {
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.
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;
}
psJson=jsonCreate(psWeb->pData,NULL);
.
.
.
psJson=jsonDestroy(psJson);
return NULL;
}
|