HTTP Request
-
Badestrand schrieb:
Unter Windows kann man, der WinAPI sei dank, auch einfach "URLDownloadToFile" aufrufen

und unter Linux "wget"
-
Paul Manns schrieb:
und unter Linux "wget"
Nicht nur unter Linux.
-
wgetter schrieb:
Paul Manns schrieb:
und unter Linux "wget"
Nicht nur unter Linux.
sry

-
ich bekomms ums verrecken nicht her, die kack lib dazuzulinken, so eine scheiße.
-
Hast du dir den Link angesehen?
Dort wird's ziemlich genau beschrieben.
-
versuch mal
#pragma comment(lib, "xyz.lib")im Quellcode... Also für xyz.lib natürlich den richtigen Namen...Alternativ wär es auf der linken seite im "Projektmappen-Explorer" nen rechtsklick auf dein Projekt gewesen und dann hinzufügen etc...
bb und gl ; )
-
ja, da wirds ziemlich gut beschrieben.
Allerdings reicht mir ziemlich gut wohl wieder mal nicht:
Ich hab Alles was drin stand gemacht, außer das mit der .proj datei hab ich nicht verstanden. Die lib hab ich heruntergeladen, aber da steht nur "im Linker dazulinken", was ich nicht verstehe.
Folgende Errors hab ich momentan.
Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__CrtDbgReportW" in Funktion ""public: char const & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator[](unsigned int)const " (??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z)". main.obj Fehler 3 error LNK2001: Nicht aufgelöstes externes Symbol "__CrtDbgReportW". libcpmtd.lib Fehler 4 error LNK2001: Nicht aufgelöstes externes Symbol "__CrtDbgReportW". libcpmtd.lib Fehler 5 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__WSACleanup@0" in Funktion "_win32_cleanup". curllib.lib Fehler 6 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSACleanup@0". curllib.lib Fehler 7 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__WSAStartup@8" in Funktion "_win32_init". curllib.lib Fehler 8 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAStartup@8". curllib.lib Fehler 9 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4". curllib.lib Fehler 10 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4". curllib.lib Fehler 11 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4". curllib.lib Fehler 12 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__closesocket@4" in Funktion "_conn_free". curllib.lib Fehler 13 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4". curllib.lib Fehler 14 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4". curllib.lib Fehler 15 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4". curllib.lib Fehler 16 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 17 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0" in Funktion "_ftp_state_use_port". curllib.lib Fehler 18 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 19 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 20 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 21 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 22 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 23 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0". curllib.lib Fehler 24 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__recv@16" in Funktion "_Curl_getinfo". curllib.lib Fehler 25 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__recv@16". curllib.lib Fehler 26 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__inet_ntoa@4" in Funktion "_inet_ntop4". curllib.lib Fehler 27 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__htons@4" in Funktion "_Curl_he2ai". curllib.lib Fehler 28 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__htons@4". curllib.lib Fehler 29 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__htons@4". curllib.lib Fehler 30 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__gethostbyname@4" in Funktion "_gethostbyname_thread@4". curllib.lib Fehler 31 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__WSASetLastError@4" in Funktion "_gethostbyname_thread@4". curllib.lib Fehler 32 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSASetLastError@4". curllib.lib Fehler 33 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__socket@12" in Funktion "_init_resolve_thread". curllib.lib Fehler 34 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__socket@12". curllib.lib Fehler 35 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__socket@12". curllib.lib Fehler 36 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__inet_addr@4" in Funktion "_Curl_getaddrinfo". curllib.lib Fehler 37 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__inet_addr@4". curllib.lib Fehler 38 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__inet_addr@4". curllib.lib Fehler 39 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "___WSAFDIsSet@8" in Funktion "_Curl_socket_ready". curllib.lib Fehler 40 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__select@20" in Funktion "_Curl_socket_ready". curllib.lib Fehler 41 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ntohs@4" in Funktion "_Curl_SOCKS4". curllib.lib Fehler 42 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__ntohs@4". curllib.lib Fehler 43 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__ntohs@4". curllib.lib Fehler 44 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__send@16" in Funktion "_Curl_plain_send". curllib.lib Fehler 45 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__send@16". curllib.lib Fehler 46 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ioctlsocket@12" in Funktion "_Curl_nonblock". curllib.lib Fehler 47 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__getsockname@12" in Funktion "_bindlocal". curllib.lib Fehler 48 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__getsockname@12". curllib.lib Fehler 49 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__bind@12" in Funktion "_bindlocal". curllib.lib Fehler 50 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__bind@12". curllib.lib Fehler 51 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__bind@12". curllib.lib Fehler 52 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__getsockopt@20" in Funktion "_verifyconnect". curllib.lib Fehler 53 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__setsockopt@20" in Funktion "_tcpnodelay". curllib.lib Fehler 54 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__getprotobyname@4" in Funktion "_tcpnodelay". curllib.lib Fehler 55 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__connect@12" in Funktion "_singleipconnect". curllib.lib Fehler 56 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__timeGetTime@0" in Funktion "_gettimeofday". curllib.lib Fehler 57 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__accept@12" in Funktion "_AllowServerConnect". curllib.lib Fehler 58 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__listen@8" in Funktion "_ftp_state_use_port". curllib.lib Fehler 59 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__sendto@24" in Funktion "_tftp_rx". curllib.lib Fehler 60 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__recvfrom@24" in Funktion "_Curl_tftp". curllib.lib Fehler 61 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__malloc_dbg" in Funktion ""void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z)". libcpmtd.lib Fehler 62 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__free_dbg" in Funktion ""void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z)". libcpmtd.lib Fehler 63 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__calloc_dbg" in Funktion "__Getctype". libcpmtd.lib Fehler 64 fatal error LNK1120: 31 nicht aufgelöste externe Verweise. C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\httprequest\Debug\httprequest.exe
-
In the linker section add curllib.lib, ws2_32.lib, winmm.lib
sprich: in deinen compileroptionen.
-
edii schrieb:
ich bekomms ums verrecken nicht her, die kack lib dazuzulinken, so eine scheiße.
Mir geht es ähnlich.
Erhalte auch:
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_cleanup
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_perform
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_setopt
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_initHabe schon #pragma comment(lib,"curllib.lib")
und #define CURL_STATICLIB usw.
ausprobiert und bei den Projekteinstellungen curllib.lib ws2_32.lib winmm.lib addiert, aber es will einfach nicht
-
Es gibt da noch ne alternative zu libcurl, die nur den quelltext einer URL downloaded. nennt sich URLDownloadToFile().
Hier ein beispiel:
#include <Urlmon.h> #pragma comment(lib,"Urlmon.lib") #ifdef __cplusplus extern "C" { #endif std::string adress = "www.google.at"; std::string file = "derquellcode.txt"; HRESULT res = 0; URLDownloadToFile(NULL, reinterpret_cast<LPCSTR>(adress.c_str()), reinterpret_cast<LPCSTR>(file.c_str()), NULL, NULL); return res; }; #ifdef __cplusplus } #endif
-
Kann man das statt für Dateien auch für Buffer umschreiben (das Programm soll nämlich nicht auf die Festplatte zugreifen / schreiben)?
-
ja das geht auch. ich verstehe nicht was gegen sockets spricht. die gibbet
sowohl unter linux als auch unter windows.ob das funzt weiß ich nicht (ungetestet)
std::vector<char> getquelltext(const std::string &url) { // kann man auch durch std::string ersetzen std::vector<char> buffer; WSADATA wsa; WSAStartup(MAKEWORD(1, 1), &wsa); hostent *host = gethostbyname(url.c_str()); if (host && host->h_addr_list && host->h_addr_list[0]) { unsigned ip = *reinterpret_cast<DWORD *>(host->h_addr_list); sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(80); addr.sin_addr.S_addr = ip; SOCKET soc = socket(AF_INET, SOCK_STREAM, 0); if (soc != SOCKET_ERROR) { if (connect(soc, &addr, sizeof(addr)) != SOCKET_ERROR) { // HIER DAS HTTP REQUEST SENDEN mit send // UND HIER EMPFANGEN mit recv // mir fehlt hier die zeit um alles nachzugucken } closesocket(soc); } } WSACleanup(); return buffer; }wenn du davon was nicht verstehst, guck hier und hier
und die wsock_32.lib dazulinken (+ winsock.h)
-
Keine Ahnung, ob die WSA's auch https können.
Hab's jetzt mit InternetConnect und HttpOpenRequest hinbekommen.
Lag wohl an den Flags:
#define IGNORE_CERT SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALIDhalf mir.