Discussione sull’articolo "Utilizzo di WinInet in MQL5. Parte 2: Richieste e file POST"

 

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:

  • creare e inviare semplici richieste POST a un server;
  • inviare file a un server utilizzando il metodo di rappresentazione multipart/form-data;
  • lavorare con i cookie e leggere le informazioni dai siti web utilizzando il tuo nome utente.

Come in precedenza, consiglio vivamente di configurare un server proxy locale Charles; sarà necessario per il tuo studio e ulteriori esperimenti.

Autore: ---

 
Rosh:

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

 
dopo l'ultimo aggiornamento di MT5 non è possibile utilizzare wininet, ir genera un errore di violazione dell'accesso. Qualche suggerimento per superare questo errore? Soluzioni? Ho provato senza successo.
 
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.
 
mundoforex:

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.
Dopo un po' di tempo continuo ad avere errori di violazione dell'accesso.
 
Perché nessuno si preoccupa di questo problema?
 
mundoforex:

Perché nessuno si preoccupa di questo problema?
Sono d'accordo con te... Sto aspettando disperatamente una soluzione ma nessuno risponde. Pensavo che l'ultimo aggiornamento avrebbe risolto il problema come mi avevano detto gli amministratori, ma dopo l'aggiornamento non mi hanno più risposto :(
 

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.
HttpOpenRequest function (Windows)
  • msdn.microsoft.com
Creates an HTTP request handle. Syntax Parameters hConnect [in] lpszVerb [in] A pointer to a null-terminated string that contains the HTTP verb to use in the request. If this parameter is NULL, the function uses GET as the HTTP verb. lpszObjectName [in] A pointer to a null-terminated string that contains the name of the target object of the...
 

Sto cercando di ottenere un rapporto sui prodotti dal mio profilo e non ci riesco, cosa sto sbagliando?