Only supports GET, POST and HEAD.
(All is just a wrapper over cURL library just made it easy for my daily jobs).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char ** argv){
curl_global_init(CURL_GLOBAL_ALL);
if (!ctx){
fprintf(stderr, "Can not create context for request\n");
return 1;
}
"(KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36");
return 1;
}
char url[] = "http://ipinfo.io/ip";
curl_global_cleanup();
return 1;
}
fprintf(stdout,
"Final URL: %s\n", ctx->
response->
url);
fprintf(stdout, "Content len: %ld\n",
fprintf(stdout, "Content len(from header): %s\n", content_len);
free(content_len);
fprintf(stdout, "******Output********\n");
fprintf(stdout, "********************\n");
fprintf(stdout, "*********headers**********\n");
while (tmp){
fprintf(stdout,
"'%s' -> '%s'\n", tmp->
key, tmp->
value);
}
fprintf(stdout, "**************************\n");
fprintf(stdout, "*********redirection**********\n");
while (r){
fprintf(stdout,
"'%s'\n", r->
url);
}
fprintf(stdout, "**************************\n");
curl_global_cleanup();
return 0;
}
void creq_set_timeout(CREQ_CTX *ctx, long timesec)
Sets timeout for both connection and data transfer.
Definition crequests.c:337
void creq_add_param(CREQ_CTX *ctx, char *key, char *value)
Sets a GET/POST param.
Definition crequests.c:953
char * creq_error(CREQ_CTX *ctx)
Returns the possible error message.
Definition crequests.c:894
char * creq_get_content(CREQ_CTX *ctx)
Returns the content of the request.
Definition crequests.c:1024
char * creq_get_response_header(CREQ_CTX *ctx, char *key)
Returns the value for a given header name.
Definition crequests.c:1118
void creq_close(CREQ_CTX *ctx)
Cleans up the library and memory after using it.
Definition crequests.c:234
CREQ_CTX * creq_init(void)
Initialize the creq library for a new request.
Definition crequests.c:52
void creq_add_header(CREQ_CTX *ctx, char *header)
Adds a header to the header list for sending.
Definition crequests.c:111
void creq_get(CREQ_CTX *ctx, char *url)
Sends a GET request to the specified URL.
Definition crequests.c:651
void creq_set_useragent(CREQ_CTX *ctx, char *ua)
Add user-agent to the request header.
Definition crequests.c:585
void creq_set_verify(CREQ_CTX *ctx, int val)
Enables/disables SSL/TLS verification.
Definition crequests.c:291
#define CREQ_ERROR_SUCCESS
Definition crequests.h:8
Definition crequests.h:83
CREQ_RESPONSE_DATA * response
response structure
Definition crequests.h:86
int err_code
Any possible error code (0 means success)
Definition crequests.h:84
Definition crequests.h:55
char * url
URL found in 'Location' header.
Definition crequests.h:56
CREQ_REDIRECTION_CHAIN * next
pointer to the next node
Definition crequests.h:57
char * url
final destination URL
Definition crequests.h:76
long status_code
returned HTTP status code
Definition crequests.h:75
CREQ_HEADER * headers
linked-list of response headers
Definition crequests.h:79
CREQ_REDIRECTION_CHAIN * follow_chain
Linked-list of redirections.
Definition crequests.h:80
char * mem
pointer to memory we keep the body of the request
Definition crequests.h:77