Discussione sull’articolo "Utilizzo di WinInet.dll per lo scambio di dati tra terminali tramite Internet" - pagina 4

 
OK, ho cambiato idea. Vale la pena di provare questo oggetto perché questi idioti malati di MetaQuotes vietano l'uso della funzione WebRequest in Strategy Tester.
 

è riuscito a funzionare su mt5 x64 (lo script metagrabber ha funzionato senza errori)

modifiche al codice in internetlib.mqh classe ::reqest

// creare un descrittore di richiesta
   string null = NULL;
   hRequest=HttpOpenRequestW(Connect,Verb,Object,Vers,nill,null,FLAG_KEEP_CONNECTION|FLAG_RELOAD|FLAG_PRAGMA_NOCACHE,0);
 

Ma mi risulta che la richiesta da Internet non possa essere utilizzata nei prodotti Market, perché le dll sono vietate.

e non c'è altro modo per usare #import "wininet.dll" senza la dll stessa?

 
Yurij Izyumov:

Ma mi risulta che la richiesta da Internet non possa essere utilizzata nei prodotti Market, perché le dll sono vietate.

e non c'è altro modo per usare #import "wininet.dll" senza la dll stessa?

Esiste già da tempo WebRequest, che è consentito nel Market.
 

Nel codice seguente, ho sostituito la variabile URL con path, perché URL è una variabile esterna alla funzione ParseURL:

void ParseURL(string path,string &host,string &request,string &filename)

{

host=StringSubstr(path,7);

// rimuovere

int i=StringFind(host,"/");

request=StringSubstr(host,i);

host=StringSubstr(host,0,i);

stringa file="";

for(i=StringLen(percorso)-1; i>=0; i--)

if(StringSubstr(path,i,1)=="/")

{

file=StringSubstr(percorso,i+1);

break;

}

if(file!="") filename=file;

}

 

Buona sera!

Ho usato XAMPP per installare php e apache. Tuttavia, non riesco ad accedere alla pagina via GET da MQL5.

Di seguito l'errore restituito:

Accesso vietato!

Non hai il permesso di accedere all'oggetto richiesto.

È protetto dalla lettura o non è leggibile dal server.

Qualcuno sa come risolvere questo problema?
 
Andrey Khatimlianskii:
Esiste WebRequest già da molto tempo, è consentito nel mercato.

Ci sono già problemi con il mercato (l'accesso è chiuso su mcl5) e non funziona in indicators....

 
Vladimir Pastushak:

Sul mercato ci sono già problemi (l'accesso è chiuso su µl5) e non funziona negli indicatori...

WebRequest non ha mai funzionato negli indicatori. Il motivo del rifiuto non è chiaro, perché lo sviluppatore può decidere, quando scrive un programma, se utilizzare WebRequest o meno. Lo facciamo nel 21° secolo WinInet.dll
 
Vladimir Pastushak:

Già nel mercato ci sono problemi (su mcl5 l'accesso è chiuso) e non funziona negli indicatori...

Quali problemi nel mercato?

E perché l'accesso su µl5?


Vitaly Muzichenko:
WebRequest non ha mai funzionato negli indicatori. Il motivo del rifiuto non è chiaro, perché lo sviluppatore può decidere, quando scrive un programma, se utilizzare WebRequest o meno. Lo facciamo nel 21° secolo WinInet.dll

Il motivo è molto semplice: gli indicatori lavorano nel thread dell'interfaccia e qualsiasi pausa sospende l'intero grafico. E nessuno può garantire l'esecuzione istantanea di una richiesta web.

Probabilmente è possibile creare una modalità speciale simile a CopyRates, in cui la prima chiamata richiede semplicemente i dati e le chiamate successive li utilizzano. Ma non credo che MQ creerà una tale stampella per le richieste web, dovremo inventarla noi (lanciando uno script o qualcos'altro).

 
Andrey Khatimlianskii:

Quali sono i problemi del mercato?

E perché accedere a µl5?


Il motivo è molto semplice: gli indicatori lavorano nel thread dell'interfaccia e qualsiasi pausa sospende l'intero grafico. E nessuno può garantire l'esecuzione istantanea di una richiesta web.

Probabilmente è possibile creare una modalità speciale simile a CopyRates, in cui la prima chiamata richiede semplicemente i dati e le chiamate successive li utilizzano. Ma non credo che MQ creerà una stampella di questo tipo per le web-request, dovremo inventarcela da soli (tramite l'esecuzione di uno script o qualcos'altro).

Lasciare che sospenda la pianificazione in fase di esecuzione, qual è il problema? Ripeto:"lo sviluppatore stesso può decidere, quando scrive un programma, se usare WebRequest o meno".