done task 5
This commit is contained in:
52
week5_TinsaeGhilay/Task 4/Client.cpp
Normal file
52
week5_TinsaeGhilay/Task 4/Client.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <curl/curl.h>
|
||||
|
||||
size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
|
||||
((std::string*)userp)->append((char*)contents, size * nmemb);
|
||||
return size * nmemb;
|
||||
}
|
||||
|
||||
std::string httpRequest(const std::string& url,
|
||||
const std::string& method,
|
||||
const std::string& body = "") {
|
||||
CURL* curl;
|
||||
CURLcode res;
|
||||
std::string readBuffer;
|
||||
|
||||
curl = curl_easy_init();
|
||||
if (curl) {
|
||||
struct curl_slist* headers = NULL;
|
||||
headers = curl_slist_append(headers, "Content-Type: application/json");
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, method.c_str());
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
||||
|
||||
if (!body.empty()) {
|
||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str());
|
||||
}
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
return readBuffer;
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::string base = "http://localhost:8080/shop-1.0-SNAPSHOT/api/items";
|
||||
|
||||
// GET all items
|
||||
std::cout << "GET all items:\n" << httpRequest(base, "GET") << "\n\n";
|
||||
|
||||
// GET item by ID
|
||||
std::cout << "GET item 1:\n" << httpRequest(base + "/1", "GET") << "\n\n";
|
||||
|
||||
// POST new item
|
||||
std::string newItem = R"({"name":"Mouse","price":1.25, "description":"Logitek gaming mouse"})";
|
||||
std::cout << "POST new item:\n" << httpRequest(base, "POST", newItem) << "\n\n";
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user