00001 /*************************************************************************** 00002 * _ _ ____ _ 00003 * Project ___| | | | _ \| | 00004 * / __| | | | |_) | | 00005 * | (__| |_| | _ <| |___ 00006 * \___|\___/|_| \_\_____| 00007 * 00008 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. 00009 * 00010 * This software is licensed as described in the file COPYING, which 00011 * you should have received as part of this distribution. The terms 00012 * are also available at https://curl.haxx.se/docs/copyright.html. 00013 * 00014 * You may opt to use, copy, modify, merge, publish, distribute and/or sell 00015 * copies of the Software, and permit persons to whom the Software is 00016 * furnished to do so, under the terms of the COPYING file. 00017 * 00018 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 00019 * KIND, either express or implied. 00020 * 00021 ***************************************************************************/ 00022 /* <DESC> 00023 * HTTP request with custom modified, removed and added headers 00024 * </DESC> 00025 */ 00026 #include <stdio.h> 00027 #include <curl/curl.h> 00028 00029 int main(void) 00030 { 00031 CURL *curl; 00032 CURLcode res; 00033 00034 curl = curl_easy_init(); 00035 if(curl) { 00036 struct curl_slist *chunk = NULL; 00037 00038 /* Remove a header curl would otherwise add by itself */ 00039 chunk = curl_slist_append(chunk, "Accept:"); 00040 00041 /* Add a custom header */ 00042 chunk = curl_slist_append(chunk, "Another: yes"); 00043 00044 /* Modify a header curl otherwise adds differently */ 00045 chunk = curl_slist_append(chunk, "Host: example.com"); 00046 00047 /* Add a header with "blank" contents to the right of the colon. Note that 00048 we're then using a semicolon in the string we pass to curl! */ 00049 chunk = curl_slist_append(chunk, "X-silly-header;"); 00050 00051 /* set our custom set of headers */ 00052 res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); 00053 00054 curl_easy_setopt(curl, CURLOPT_URL, "localhost"); 00055 curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 00056 00057 res = curl_easy_perform(curl); 00058 /* Check for errors */ 00059 if(res != CURLE_OK) 00060 fprintf(stderr, "curl_easy_perform() failed: %s\n", 00061 curl_easy_strerror(res)); 00062 00063 /* always cleanup */ 00064 curl_easy_cleanup(curl); 00065 00066 /* free the custom headers */ 00067 curl_slist_free_all(chunk); 00068 } 00069 return 0; 00070 }