Nuovo articolo Utilizzo di WinInet in MQL5. Parte 2: Richieste POST e file è stato pubblicato:
Autore: Alex Sergeev
Ciao Alex,
Ottimo articolo - ho una richiesta per la 'Parte 3': Comunicazione client XML-RPC (e server, se possibile).
Salute
Quando si esegue la seguente istruzione, il sistema si blocca; come si dovrebbe risolvere questo problema?
hConnect=InternetConnectW(hSession, aHost, aPort, aUser, aPass, aService, 0, 0);
Errore: violazione dell'accesso letto a 0x00000000001F94 in '......ex5'.
C'è un piccolo errore alla riga 161. Quella riga dovrebbe essere:
else StringToCharArray(req.stData, data, 0, StringLen(req.stData));
Questo perché il terminale 0 viene copiato nell'array e HttpSendRequestW invia il terminale 0 (come un carattere extra) all'ultimo valore della post var. Ad esempio, se i dati sono:
var1=value1&var2=value2
Si otterrà nella pagina web la var1 associata al valore1 e la var2 associata al valore2\0.
Questo è un ottimo articolo. Grazie per averlo condiviso.
Saluti
L'errore di violazione dell'accesso è stato risolto, ma le richieste POST ora non funzionano. A quanto pare i dati in un array di uchar non vengono inviati correttamente alla funzione dll.
Perché nessuno si preoccupa di questo problema?
Ho anche riscontrato un errore di violazione dell'accesso con questa classe di oggetti. Il problema risiedeva nell'utilizzo di '0' come puntatore NULL nella chiamata alla funzione HttpOpenRequestW. Provate a sostituire la chiamata
--- hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0);
con una chiamata:
+++ hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, NULL, NULL , INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0);
È curioso che l'uso improprio del puntatore NULL sia esplicitamente indicato come motivo di arresto anomalo nella documentazione MSDN:
Failing to properly terminate the array with a NULL pointer will cause a crash.
- msdn.microsoft.com
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Utilizzo di WinInet in MQL5. Parte 2: Richieste e file POST è stato pubblicato:
In questo articolo, continuiamo a studiare i principi del lavoro con Internet utilizzando le richieste HTTP e lo scambio di informazioni con il server. Descrive nuove funzionalità della classe CMqlNet, modalità di invio di informazioni da form e invio di file tramite richieste POST nonché autorizzazione sui siti web con il tuo nome utente tramite Cookie.
Nella lezione precedente, "Using WinInet.dll for Data Exchange between Terminals via the Internet", abbiamo imparato a lavorare con la libreria, aprire pagine web, inviare e ricevere informazioni tramite richieste GET.
In questa lezione impareremo a:
Come in precedenza, consiglio vivamente di configurare un server proxy locale Charles; sarà necessario per il tuo studio e ulteriori esperimenti.
Autore: ---