dalla natura del problema che state descrivendo immagino che usiate B600 >
quindi dovete adattare il vostro codice usando UNICODE per esempio
int InternetOpenW(...
e non (ANSI)
int InternetOpenA(...
Ciao a tutti,
So che questo argomento è stato discusso molte volte. Ma tutti gli articoli che ho trovato su questo argomento erano purtroppo troppo complicati o producevano messaggi di errore perché erano troppo vecchi. Pertanto non sono stato in grado di creare uno script che faccia una semplice richiesta POST/GET.
Quindi, voglio semplicemente inviare una richiesta POST e GET a un server. Il file di destinazione è un semplice file php.
Questo è il mio primo testcript che ho prodotto e che è basato su https://www.mql5.com/en/code:
Purtroppo ricevo come risultato "0" che significa che la richiesta non ha avuto successo. Ma non riesco a capire perché.
Spero che tu possa aiutarmi.
Grazie,
Alex
https://www.mql5.com/en/forum/149321
OK. Grazie per la risposta veloce. Non l'ho ancora testato, ma potresti dare qualche dettaglio in più? Scusa se te lo chiedo, ma cos'è B600? Inoltre non riesco a trovare la documentazione per le funzioni "InternetOpenW" o "InternetOpenA" su http://msdn.microsoft.com/en-u s/library/windows/desktop/aa385098(v=vs.85).aspx
Da dove viene il "...A" e "...W"?
Grazie per l'aiuto.
ma cos'è B600?
versione 600 e oltre (MetaTrader) = build 600 e oltre = B600 >
Da dove viene il "...A" e "...W"?
Spero che tu possa leggere
nella stessa pagina nel link che hai fornito dice(in fondo):
Nomi Unicode e ANSI InternetOpenUrlW (Unicode) e InternetOpenUrlA (ANSI)
Quindi, in realtà penso che per le richieste POST/GET non ho affatto bisogno della funzione "InternetOpenUrlW".
Questo è il codice attuale che ancora non funziona :-( :
#import "Wininet.dll" int InternetOpenW(string, int, string, string, int); int InternetConnectW(int, string, int, string, string, int, int, int); int InternetOpenUrlW(int, string, string, int, int, int); int InternetCloseHandle(int); int HttpOpenRequestA (int, string, string, string, string, string& AcceptTypes[], int, int); bool HttpSendRequestW(int, string, int, string, int); #import int OnInit() { string headers = "Content-Type: application/x-www-form-urlencoded"; string data = ""; string acceptTypes[1] = {"*/*"}; int HttpOpen = InternetOpenW("HTTP_Client_Sample", 1, NULL, NULL, 0); int HttpConnect = InternetConnectW(HttpOpen, "http://localhost/tradex", 7777, NULL, NULL, 3, 0, 1); int HttpRequest = HttpOpenRequestA(HttpConnect, "POST", "/index.php", "HTTP/1.1", NULL, acceptTypes, 0, 1); string result = HttpSendRequestW(HttpRequest, headers, StringLen(headers), data, StringLen(data)); int read[1]; Print("This is the POST result: " + result); return(0); }
Ho scritto sopra che avete bisogno di adattare il vostro codice per UNICODE e vi ho dato solo un esempio e avete ancora lasciato delle cose che dovete adattare per
int HttpOpenRequestA (int, string, string, string, string, string& AcceptTypes[], int, int);
e ti dico in anticipo che non è tutto, c'è di più
Ciao qjol,
nel mio post precedente ho scritto che cambiare "HttpOpenRequestA" in "HttpOpenRequestW" causa l'errore "Access violation read to 0x0000007B in 'Wininet.dll'".
Tutte le altre funzioni le ho già cambiate in UNICODE.
Mi dispiace se ho capito male, ma cos'altro manca o è sbagliato per una semplice richiesta POST/GET?
Ciao qjol,
grazie per il link che è molto utile. Vedo che GET dati da un URL sembra funzionare ma non so ancora come POST dati. Il tuo script definisce la funzione "HttpOpenRequestW" ma non la usa. Inoltre lo script recupera solo i dati, il che funziona alla grande.
Ma ancora come posso POSTare i dati? Dovrebbe funzionare con "HttpOpenRequestW" ma come ho già postato prima ottengo il messaggio di errore: "Access violation read to 0x0000007B in 'Wininet.dll'" e "HttpOpenRequestA" ovviamente non funziona.
Spero possiate aiutarmi.
Ho deciso di controllare il tuo codice e l'ho aggiustato ma dato che risultato = falso, ho controllato e sto ottenendo il codice di errore 12005 e secondo la lista dei codici di errore di microsoft significa
ERRORE_INTERNET_INVALIDO_URL
12005
L'URL non è valido.
#import "Wininet.dll" int InternetOpenW(string, int, string, string, int); int InternetConnectW(int, string, int, string, string, int, int, int); int InternetOpenUrlW(int, string, string, int, int, int); int InternetReadFile(int, string, int, int& OneInt[]); int InternetCloseHandle(int); int HttpOpenRequestW(int, string, string, string, string, string& AcceptTypes[], int, int); bool HttpSendRequestW(int, string, int, string, int); #import #import "kernel32.dll" int GetLastError(void); #import string headers = "Content-Type: application/x-www-form-urlencoded"; string data = ""; string acceptTypes[1] = {"*/*"}; int HttpOpen = InternetOpenW("HTTP_Client_Sample", 1, "", "", 0); int HttpConnect = InternetConnectW(HttpOpen, "http://localhost/tradex", 7777, "", "", 3, 0, 1); int HttpRequest = HttpOpenRequestW(HttpConnect, "POST", "/index.php", "HTTP/1.1", "", acceptTypes, 0, 1); bool result = HttpSendRequestW(HttpRequest, headers, StringLen(headers), data, StringLen(data)); Alert ("Last MSDN Error =: ", kernel32::GetLastError()); int read[1]; // not used Print("This is the POST result: ", result); if (HttpOpen > 0) InternetCloseHandle(HttpOpen); if (HttpRequest > 0) InternetCloseHandle(HttpRequest); return;
- 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
Ciao a tutti,
So che questo argomento è stato discusso molte volte. Ma tutti gli articoli che ho trovato su questo argomento erano purtroppo troppo complicati o producevano messaggi di errore perché erano troppo vecchi. Pertanto non sono stato in grado di creare uno script che faccia una semplice richiesta POST/GET.
Quindi, voglio semplicemente inviare una richiesta POST e GET a un server. Il file di destinazione è un semplice file php.
Questo è il mio primo testcript che ho prodotto e che è basato su https://www.mql5.com/en/code:
Purtroppo ricevo come risultato "0" che significa che la richiesta non ha avuto successo. Ma non riesco a capire perché.
Spero che tu possa aiutarmi.
Grazie,
Alex