Hoi.
Ik probeer een json bestand binnen te hengelen in een C++ programma met curl, maar bij het downloaden zijn de line endings van "\r\n" naar "\r\r\n" veranderd.
Wanneer ik dit handmatig via dezelfde URL binnenhaal met standalone curl of een browser, zijn de line endings wel netjes "\r\n".
Ik heb werkelijk waar geen idee waardoor dit wordt veroorzaakt. Zo moeilijk is het binnenhalen van 1 rotbestand toch niet?
Links: Gedownload met de code.
Rechts: Gedownload met standalone curl.
/f/image/xu0sncXvnlQQpphw6KOM1EJJ.png?f=fotoalbum_large)
Code:
curl lib gebouwd met deze settings:
Iemand een idee hoe dit in hemelsnaam gebeurt en kan worden opgelost?
Ik probeer een json bestand binnen te hengelen in een C++ programma met curl, maar bij het downloaden zijn de line endings van "\r\n" naar "\r\r\n" veranderd.
Wanneer ik dit handmatig via dezelfde URL binnenhaal met standalone curl of een browser, zijn de line endings wel netjes "\r\n".
Ik heb werkelijk waar geen idee waardoor dit wordt veroorzaakt. Zo moeilijk is het binnenhalen van 1 rotbestand toch niet?
Links: Gedownload met de code.
Rechts: Gedownload met standalone curl.
/f/image/xu0sncXvnlQQpphw6KOM1EJJ.png?f=fotoalbum_large)
Code:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| #include <curl/curl.h> #include <fstream> #include <string> #include <cstdio> #pragma comment(lib, "Ws2_32.lib") #pragma comment(lib, "GDI32.LIB") #pragma comment(lib, "ADVAPI32.LIB") #pragma comment(lib, "CRYPT32.LIB") #pragma comment(lib, "USER32.LIB") #pragma comment(lib, "Wldap32.Lib") #pragma comment(lib, "Normaliz.lib") std::size_t WriteCallback(char* data, size_t size, size_t nmemb, std::string* writerData) { if (writerData == NULL) return 0; writerData->append(data, size * nmemb); return size * nmemb; } std::string GetRemoteText(const std::string& url) { CURL* curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); long httpCode(0); std::string httpData; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &httpData); curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode); curl_easy_cleanup(curl); if (httpCode == 200) { printf("[Flags] Successfully got json file\n"); return httpData; } else { printf("[Flags] Failed to get json file, HTTP: {}\n", httpCode); } } return {}; } int main() { std::string output = GetRemoteText("https://raw.githubusercontent.com/E66666666/GTAVHandlingInfo/master/flags.json"); std::ofstream out("flags.json"); out << output; out.close(); } |
curl lib gebouwd met deze settings:
code:
1
2
3
4
5
6
7
| curl 7.63.0 Windows\VC15 Build platform: v142 SDK: 10.0 (Latest) LIB Release - DLL Windows SSPI - DLL WinIDN 64-bit Properties/C++/Code Generation/Runtime Library: Multi-threaded (/MT) |
Iemand een idee hoe dit in hemelsnaam gebeurt en kan worden opgelost?