参考
获取返回结果
#include <curl/curl.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
size_t WriteCallback(char *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
std::string contents;
std::string filename = "hello.txt";
std::ifstream in(filename, std::ios::in | std::ios::binary);
if (in) {
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
}
CURL *curl;
CURLcode res;
struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
struct curl_slist *headerlist = NULL;
static const char buf[] = "Expect:";
curl_global_init(CURL_GLOBAL_ALL);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME,
"cache-control:", CURLFORM_COPYCONTENTS, "no-cache",
CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME,
"content-type:", CURLFORM_COPYCONTENTS, "multipart/form-data",
CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME,
"file",
CURLFORM_BUFFER, "data", CURLFORM_BUFFERPTR, contents.data(),
CURLFORM_BUFFERLENGTH, contents.size(), CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME,
"packageId",
CURLFORM_BUFFERPTR, "67",
CURLFORM_END);
curl = curl_easy_init();
headerlist = curl_slist_append(headerlist, buf);
std::string readBuffer;
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8000");
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
cout<<readBuffer<<endl;
curl_easy_cleanup(curl);
curl_formfree(formpost);
curl_slist_free_all(headerlist);
}
}