HTTP Request



  • Paul Manns schrieb:

    und unter Linux "wget"

    Nicht nur unter Linux.

    http://gnuwin32.sourceforge.net/packages/wget.htm



  • wgetter schrieb:

    Paul Manns schrieb:

    und unter Linux "wget"

    Nicht nur unter Linux.

    http://gnuwin32.sourceforge.net/packages/wget.htm

    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_init

    Habe 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_INVALID

    half mir.


Anmelden zum Antworten