C++
util.h
#ifndef UTIL_H#define UTIL_H#include <stdio.h>#include <stdlib.h>#include <string.h>struct MemoryStruct { char *memory; size_t size;};size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp);#endif
util.cpp
#include "util.h"size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp){ size_t realsize = size * nmemb; struct MemoryStruct *mem = (struct MemoryStruct *)userp; char *ptr = (char*) realloc(mem->memory, mem->size + realsize + 1); if(ptr == NULL){ printf("error: could not allocate Memory!"); return 0; } mem->memory = ptr; memcpy(&(mem->memory[mem->size]),contents ,realsize); mem->size +=realsize; mem->memory[mem->size]= 0; return realsize;}
main.cpp
#include <iostream>#include <string>#include <curl/curl.h>#include "util.h"int main(){ CURL *curl_handle; CURLcode res; struct curl_slist *headerList = NULL; const char *body = (char *)"{\"options\": { \"method\": \"GET\",\"headers\": {\"Content-Type\": \"application/json\",\"Accept\": \"application/json\"}}, \"url\": \"/rest/api/3/issue/DEV-16\"}"; struct MemoryStruct chunk; chunk.memory = (char *)malloc (1); chunk.size = 0; curl_handle = curl_easy_init(); if(curl_handle){ curl_easy_setopt(curl_handle,CURLOPT_URL, "< YOURTRIGGERURL >"); curl_easy_setopt(curl_handle,CURLOPT_USERAGENT, "libcurl-agent/1.0"); //add body curl_easy_setopt(curl_handle,CURLOPT_POSTFIELDSIZE, strlen(body)); curl_easy_setopt(curl_handle,CURLOPT_POSTFIELDS, body); //setup callback response curl_easy_setopt(curl_handle,CURLOPT_WRITEFUNCTION, WriteMemoryCallback); curl_easy_setopt(curl_handle,CURLOPT_WRITEDATA, (void *) &chunk); //set custom header list headerList = curl_slist_append(headerList, "apiKey:< YOURTOKEN >"); curl_easy_setopt(curl_handle,CURLOPT_HTTPHEADER, headerList); //do request res = curl_easy_perform(curl_handle); //log response if(res != CURLE_OK){ fprintf (stderr, "std error: %s\n", (char *) curl_easy_strerror); }else { printf("response size: %lu \n", (unsigned long) chunk.size); printf("response: %s \n", (char *) chunk.memory); } //clear memory curl_slist_free_all(headerList); curl_easy_cleanup(curl_handle); free(chunk.memory); } return 0;}