Neuer Artikel WinInet in MQL5 verwenden. Teil 2: POST-Anfragen und Dateien ist veröffentlicht:
Autor: Alex Sergejew
Hallo Alex,
Guter Artikel - ich habe eine Anfrage für 'Teil 3': XML-RPC-Client-Kommunikation (und Server, wenn möglich).
Herzlichen Glückwunsch
Wenn die folgende Anweisungausgeführt wird, stürzt das System ab. Wie sollte dies behoben werden?
hConnect=InternetConnectW(hSession, aHost, aPort, aUser, aPass, aService, 0, 0);
Fehler: Zugriffsverletzung beim Lesen auf 0x0000000000001F94 in '......ex5'
Es gibt einen kleinen Fehler in Zeile 161. Diese Zeile sollte lauten:
else StringToCharArray(req.stData, data, 0, StringLen(req.stData));
Das liegt daran, dass Terminal 0 in das Array kopiert wird und HttpSendRequestW das Terminal 0 (wie ein zusätzliches Zeichen) an den letzten Post-Var-Wert sendet. Zum Beispiel, wenn Ihre Daten sind:
var1=value1&var2=value2
Sie erhalten in Ihrer Webseite var1, die mit value1 verbunden ist, und var2, die mit value2\0 verbunden ist.
Dies ist ein großartiger Artikel. Danke, dass Sie ihn geteilt haben.
Mit freundlichen Grüßen
Der Zugriffsverletzungsfehler wurde behoben, aber die POST-Anfragen funktionieren jetzt nicht. Offenbar werden die Daten in einem uchar-Array nicht korrekt an die DLL-Funktion gesendet.
Warum kümmert sich niemand um dieses Problem?
Ich hatte auch einige Access Violation Fehler mit dieser Objektklasse. Das Problem lag in der Verwendung von '0' als NULL-Zeiger im Aufruf der Funktion HttpOpenRequestW. Versuchen Sie, den Aufruf zu ersetzen
--- hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0);
durch einen Aufruf zu ersetzen:
+++ hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, NULL, NULL , INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0);
Es ist lustig, dass die unsachgemäße Verwendung von NULL-Zeigern sogar explizit als Absturzursache in der MSDN-Dokumentation erwähnt wird:
Failing to properly terminate the array with a NULL pointer will cause a crash.
- msdn.microsoft.com

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Die Verwendung von WinInet in MQL5 Teil 2: POST-Anfragen und -Dateien :
In diesem Artikel werden wir uns weiterhin mit den Grundlagen von internetbasierten HTTP-Anfragen und dem Informationsaustausch mit Servern befassen. Es werden neue Funktionen der CMqINet-Klasse, Methoden der Informationsübertragung mit Formularen, das Senden von Dateien mit POST-Anfragen sowie Autorisierungen auf Webseiten mit Ihrem Login unter Verwendung von Cookies behandelt.
In dieser Lektion lernen wir:
Ich empfehle Ihnen hier nochmals ausdrücklich, den lokalen Proxy Server Charles zu installieren, der für weiterführendes Lernen und Experimente notwendig sein wird.
Autor: o_O