Wysyłanie zapytania http z podstawową autoryzacją

C++:
Wysyłanie zapytania http z podstawową autoryzacją

How To (Jak To Zrobić):

C++ nie ma wbudowanego wsparcia dla HTTP, więc użyjemy biblioteki CURL oraz dodatkowo cpp-base64 do zakodowania poświadczeń. Zainstaluj CURL i dołącz go do projektu. Poniżej kod:

#include <iostream>
#include <curl/curl.h>
#include <string>
#include "base64.h"

int main() {
    CURL *curl = curl_easy_init();

    if(curl) {
        // Twoje dane logowania
        std::string userName = "user";
        std::string password = "pass";
        
        // Zakoduj poświadczenia do Base64
        std::string credentials = base64_encode(userName + ":" + password);
        
        // Ustaw nagłówek autoryzacji
        struct curl_slist *headers = nullptr;
        headers = curl_slist_append(headers, ("Authorization: Basic " + credentials).c_str());

        // Ustaw URL oraz nagłówek
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/resource");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

        // Wykonaj żądanie
        CURLcode res = curl_easy_perform(curl);
        
        // Sprawdź błędy
        if(res != CURLE_OK)
            std::cerr << "CURL error: " << curl_easy_strerror(res) << std::endl;

        // Posprzątaj
        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }

    return 0;
}

Wyjście zależy od odpowiedzi serwera, więc nie podajemy przykładu. Kod powyżej wyśle żądanie GET do http://example.com/resource.

Deep Dive (Dogłębna Analiza):

Kiedyś proste żądania HTTP mogły być wysyłane przez gniazda sieciowe (sockets), ale zwiększenie bezpieczeństwa sieci wymusiło użycie silniejszych bibliotek. Najpopularniejsze alternatywy dla CURL to: Boost.Beast, cpp-httplib, i Poco. Podstawowa autentykacja, choć prosta, nie jest najbezpieczniejszą metodą; bardziej zaawansowaną i bezpieczną metodą jest OAuth. Realizacja a klienckiej strony może być mniej skomplikowana niż na serwerowej; klient musi tylko odpowiednio przygotować i wysłać poświadczenia.

See Also (Zobacz Również):