From 4105be338367d8b08b5ff8ff9fe60e86baa3aa9f Mon Sep 17 00:00:00 2001 From: baichuan Date: Thu, 23 Apr 2015 00:43:34 +0800 Subject: [PATCH 1/4] Add test for ghttp lib --- Makefile | 2 + ghttp.h | 2 +- lib/include/ghttp.h | 263 ++++++++++++++++++++++++++++++++++ lib/include/ghttp_constants.h | 105 ++++++++++++++ lib/libghttp.a | Bin 0 -> 199714 bytes test/Makefile | 5 + test/http_request.c | 40 ++++++ 7 files changed, 416 insertions(+), 1 deletion(-) create mode 100755 lib/include/ghttp.h create mode 100755 lib/include/ghttp_constants.h create mode 100644 lib/libghttp.a create mode 100644 test/Makefile create mode 100644 test/http_request.c diff --git a/Makefile b/Makefile index b3e1e57..1cc7548 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,8 @@ all: gcc -DGHTTP_MAJOR_VERSION=1 -DGHTTP_MINOR_VERSION=0 -DGHTTP_MICRO_VERSION=9 -DPACKAGE=\"libghttp\" -DVERSION=\"1.0.9\" -DSTDC_HEADERS=1 -I. -I. -g -O2 -c http_base64.c -o http_base64.o >/dev/null 2>&1 ar cru libghttp.a ghttp.o http_date.o http_hdrs.o http_req.o http_resp.o http_trans.o http_uri.o http_base64.o ranlib libghttp.a + cp libghttp.a ./lib/ + cp ghttp.h ghttp_constants.h ./lib/include/ clean: rm *.o *.a diff --git a/ghttp.h b/ghttp.h index 4ee20e1..08a68f6 100755 --- a/ghttp.h +++ b/ghttp.h @@ -22,7 +22,7 @@ #ifndef GHTTP_H #define GHTTP_H -#include +#include "ghttp_constants.h" #include #ifdef __cplusplus diff --git a/lib/include/ghttp.h b/lib/include/ghttp.h new file mode 100755 index 0000000..08a68f6 --- /dev/null +++ b/lib/include/ghttp.h @@ -0,0 +1,263 @@ +/* + * ghttp.h -- A public interface to common http functions + * Created: Christopher Blizzard , 21-Aug-1998 + * + * Copyright (C) 1998 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GHTTP_H +#define GHTTP_H + +#include "ghttp_constants.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct _ghttp_request ghttp_request; + +typedef enum ghttp_type_tag +{ + ghttp_type_get = 0, + ghttp_type_options, + ghttp_type_head, + ghttp_type_post, + ghttp_type_put, + ghttp_type_delete, + ghttp_type_trace, + ghttp_type_connect, + ghttp_type_propfind, + ghttp_type_proppatch, + ghttp_type_mkcol, + ghttp_type_copy, + ghttp_type_move, + ghttp_type_lock, + ghttp_type_unlock +} ghttp_type; + +typedef enum ghttp_sync_mode_tag +{ + ghttp_sync = 0, + ghttp_async +} ghttp_sync_mode; + +typedef enum ghttp_status_tag +{ + ghttp_error = -1, + ghttp_not_done, + ghttp_done +} ghttp_status; + +typedef enum ghttp_proc_tag +{ + ghttp_proc_none = 0, + ghttp_proc_request, + ghttp_proc_response_hdrs, + ghttp_proc_response +} ghttp_proc; + +typedef struct ghttp_current_status_tag +{ + ghttp_proc proc; /* what's it doing? */ + int bytes_read; /* how many bytes have been read? */ + int bytes_total; /* how many total */ +} ghttp_current_status; + +/* create a new request object */ +ghttp_request * +ghttp_request_new(void); + +/* delete a current request object */ +void +ghttp_request_destroy(ghttp_request *a_request); + +/* Validate a uri + * This will return -1 if a uri is invalid + */ +int +ghttp_uri_validate(char *a_uri); + +/* Set a uri in a request + * This will return -1 if the uri is invalid + */ + +int +ghttp_set_uri(ghttp_request *a_request, char *a_uri); + +/* Set a proxy for a request + * This will return -1 if the uri is invalid + */ + +int +ghttp_set_proxy(ghttp_request *a_request, char *a_uri); + +/* Set a request type + * This will return -1 if the request type is invalid or + * unsupported + */ + +int +ghttp_set_type(ghttp_request *a_request, ghttp_type a_type); + +/* Set the body. + * This will return -1 if the request type doesn't support it + */ + +int +ghttp_set_body(ghttp_request *a_request, char *a_body, int a_len); + +/* Set whether or not you want to use sync or async mode. + */ + +int +ghttp_set_sync(ghttp_request *a_request, + ghttp_sync_mode a_mode); + +/* Prepare a request. + * Call this before trying to process a request or if you change the + * uri. + */ + +int +ghttp_prepare(ghttp_request *a_request); + +/* Set the chunk size + * You might want to do this to optimize for different connection speeds. + */ + +void +ghttp_set_chunksize(ghttp_request *a_request, int a_size); + +/* Set a random request header + */ + +void +ghttp_set_header(ghttp_request *a_request, + const char *a_hdr, const char *a_val); + +/* Process a request + */ + +ghttp_status +ghttp_process(ghttp_request *a_request); + +/* Get the status of a request + */ + +ghttp_current_status +ghttp_get_status(ghttp_request *a_request); + +/* Flush the received data (so far) into the response body. This is + * useful for asynchronous requests with large responses: you can + * periodically flush the response buffer and parse the data that's + * arrived so far. + */ + +void +ghttp_flush_response_buffer(ghttp_request *a_request); + +/* Get the value of a random response header + */ + +const char * +ghttp_get_header(ghttp_request *a_request, + const char *a_hdr); + +/* Get the list of headers that were returned in the response. You + must free the returned string values. This function will return 0 + on success, -1 on some kind of error. */ +int +ghttp_get_header_names(ghttp_request *a_request, + char ***a_hdrs, int *a_num_hdrs); + +/* Abort a currently running request. */ +int +ghttp_close(ghttp_request *a_request); + +/* Clean a request + */ +void +ghttp_clean(ghttp_request *a_request); + +/* Get the socket associated with a particular connection + */ + +int +ghttp_get_socket(ghttp_request *a_request); + +/* get the return entity body + */ + +char * +ghttp_get_body(ghttp_request *a_request); + +/* get the returned length + */ + +int +ghttp_get_body_len(ghttp_request *a_request); + +/* Get an error message for a request that has failed. + */ + +const char * +ghttp_get_error(ghttp_request *a_request); + +/* Parse a date string that is one of the standard + * date formats + */ + +time_t +ghttp_parse_date(char *a_date); + +/* Return the status code. + */ + +int +ghttp_status_code(ghttp_request *a_request); + +/* Return the reason phrase. + */ + +const char * +ghttp_reason_phrase(ghttp_request *a_request); + +/* Set your username/password pair + */ + +int +ghttp_set_authinfo(ghttp_request *a_request, + const char *a_user, + const char *a_pass); + + + /* Set your username/password pair for proxy + */ + +int +ghttp_set_proxy_authinfo(ghttp_request *a_request, + const char *a_user, + const char *a_pass); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* GHTTP_H */ diff --git a/lib/include/ghttp_constants.h b/lib/include/ghttp_constants.h new file mode 100755 index 0000000..7e1d07a --- /dev/null +++ b/lib/include/ghttp_constants.h @@ -0,0 +1,105 @@ +/* + * ghttp_constants.h -- definitions for char constants that people + * might want to use + * Created: Christopher Blizzard + * + * Copyright (C) 1998 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GHTTP_CONSTANTS_H +#define GHTTP_CONSTANTS_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +extern const char http_hdr_Allow[]; +extern const char http_hdr_Content_Encoding[]; +extern const char http_hdr_Content_Language[]; +extern const char http_hdr_Content_Length[]; +extern const char http_hdr_Content_Location[]; +extern const char http_hdr_Content_MD5[]; +extern const char http_hdr_Content_Range[]; +extern const char http_hdr_Content_Type[]; +extern const char http_hdr_Expires[]; +extern const char http_hdr_Last_Modified[]; + +/* general headers */ + +extern const char http_hdr_Cache_Control[]; +extern const char http_hdr_Connection[]; +extern const char http_hdr_Date[]; +extern const char http_hdr_Pragma[]; +extern const char http_hdr_Transfer_Encoding[]; +extern const char http_hdr_Update[]; +extern const char http_hdr_Trailer[]; +extern const char http_hdr_Via[]; + +/* request headers */ + +extern const char http_hdr_Accept[]; +extern const char http_hdr_Accept_Charset[]; +extern const char http_hdr_Accept_Encoding[]; +extern const char http_hdr_Accept_Language[]; +extern const char http_hdr_Authorization[]; +extern const char http_hdr_Expect[]; +extern const char http_hdr_From[]; +extern const char http_hdr_Host[]; +extern const char http_hdr_If_Modified_Since[]; +extern const char http_hdr_If_Match[]; +extern const char http_hdr_If_None_Match[]; +extern const char http_hdr_If_Range[]; +extern const char http_hdr_If_Unmodified_Since[]; +extern const char http_hdr_Max_Forwards[]; +extern const char http_hdr_Proxy_Authorization[]; +extern const char http_hdr_Range[]; +extern const char http_hdr_Referrer[]; +extern const char http_hdr_TE[]; +extern const char http_hdr_User_Agent[]; + +/* response headers */ + +extern const char http_hdr_Accept_Ranges[]; +extern const char http_hdr_Age[]; +extern const char http_hdr_ETag[]; +extern const char http_hdr_Location[]; +extern const char http_hdr_Retry_After[]; +extern const char http_hdr_Server[]; +extern const char http_hdr_Vary[]; +extern const char http_hdr_Warning[]; +extern const char http_hdr_WWW_Authenticate[]; + +/* Other headers */ + +extern const char http_hdr_Set_Cookie[]; + +/* WebDAV headers */ + +extern const char http_hdr_DAV[]; +extern const char http_hdr_Depth[]; +extern const char http_hdr_Destination[]; +extern const char http_hdr_If[]; +extern const char http_hdr_Lock_Token[]; +extern const char http_hdr_Overwrite[]; +extern const char http_hdr_Status_URI[]; +extern const char http_hdr_Timeout[]; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* GHTTP_CONSTANTS_H */ diff --git a/lib/libghttp.a b/lib/libghttp.a new file mode 100644 index 0000000000000000000000000000000000000000..cee9928a4db3173ca534635ae801604ec86bdab2 GIT binary patch literal 199714 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

h693u(RD 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 literal 0 HcmV?d00001 diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..f527111 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,5 @@ +all: + gcc http_request.c -o http_request -I../lib/include/ -L../lib/ -lghttp + +clean: + rm http_request diff --git a/test/http_request.c b/test/http_request.c new file mode 100644 index 0000000..9315446 --- /dev/null +++ b/test/http_request.c @@ -0,0 +1,40 @@ +#include +#include +#include "ghttp.h" + +//A simple example from doc/ghttp.html +int main() +{ + char *uri = "http://www.solidot.org"; + /* This is the http request object */ + ghttp_request *request = NULL; + ghttp_status status; + char *buf = NULL; + int bytes_read = 0; + + /* Allocate a new empty request object */ + request = ghttp_request_new(); + /* Set the URI for the request object */ + if(ghttp_set_uri(request, uri) == -1) + exit(-1); + /* Set the type for the request object */ + if(ghttp_set_type(request, ghttp_type_get) == -1) + exit(-1); + /* Prepare the connection */ + ghttp_prepare(request); + /* Process the request */ + status = ghttp_process(request); + if(status == ghttp_error) + exit(-1); + /* OK, done */ + printf("Status code -> %d\n", ghttp_status_code(request)); + /* Get the response for the request */ + buf = ghttp_get_body(request); + /* Get the response for the request*/ + bytes_read = ghttp_get_body_len(request); + printf("%s\n", buf); + /* Destroy the request. This closes any file descriptors that may be open and will free any memory associated with the request. */ + ghttp_request_destroy(request); + return 0; +} + From 4d04c48189283faa53b796566d50207cdb79f3aa Mon Sep 17 00:00:00 2001 From: baichuan Date: Thu, 23 Apr 2015 01:46:50 +0800 Subject: [PATCH 2/4] Add dynamic library test --- dynamic_library_test/Makefile | 5 ++ dynamic_library_test/Readme | 20 +++++++ dynamic_library_test/http_request.c | 82 +++++++++++++++++++++++++++ dynamic_library_test/request_send.so | Bin 0 -> 15328 bytes 4 files changed, 107 insertions(+) create mode 100644 dynamic_library_test/Makefile create mode 100644 dynamic_library_test/Readme create mode 100644 dynamic_library_test/http_request.c create mode 100755 dynamic_library_test/request_send.so diff --git a/dynamic_library_test/Makefile b/dynamic_library_test/Makefile new file mode 100644 index 0000000..5075c11 --- /dev/null +++ b/dynamic_library_test/Makefile @@ -0,0 +1,5 @@ +all: + gcc -g -Wall -shared -fPIC -o request_send.so -I../lib/include/ -L../lib/ -lghttp http_request.c + +clean: + rm request_send.so diff --git a/dynamic_library_test/Readme b/dynamic_library_test/Readme new file mode 100644 index 0000000..1f7657f --- /dev/null +++ b/dynamic_library_test/Readme @@ -0,0 +1,20 @@ +Range of mothod value: + +typedef enum ghttp_type_tag +{ + ghttp_type_get = 0, + ghttp_type_options, + ghttp_type_head, + ghttp_type_post, + ghttp_type_put, + ghttp_type_delete, + ghttp_type_trace, + ghttp_type_connect, + ghttp_type_propfind, + ghttp_type_proppatch, + ghttp_type_mkcol, + ghttp_type_copy, + ghttp_type_move, + ghttp_type_lock, + ghttp_type_unlock +} ghttp_type; diff --git a/dynamic_library_test/http_request.c b/dynamic_library_test/http_request.c new file mode 100644 index 0000000..bec33ee --- /dev/null +++ b/dynamic_library_test/http_request.c @@ -0,0 +1,82 @@ +#include +#include +#include "ghttp.h" + +//A simple example from doc/ghttp.html +//int main() + +ghttp_request *init_request() +{ + ghttp_request *request = NULL; + /* Allocate a new empty request object */ + request = ghttp_request_new(); + if (request == NULL) + { + return NULL; + } + return request; +} + +char *send_request11(ghttp_request *request, char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen) +{ + //if(); + return NULL; +} + +void destory_request(ghttp_request *request) +{ + if(request != NULL) + { + ghttp_request_destroy(request); + } + return ; +} + +int send_request(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen) +{ + //char *uri = "http://www.solidot.org"; + /* This is the http request object */ + ghttp_request *request = NULL; + ghttp_status status; + char *buf = NULL, *allpath = NULL; + int bytes_read = 0, ret = 0, allpathlen = urilen + pathlen; + + if(uri == NULL || urilen == 0 || path == NULL || pathlen == 0 || body == NULL || bodylen == 0) + { + ret = -1; + } + allpath = calloc(1, allpathlen + 1); + snprintf(allpath, allpathlen, "%s%s", uri, path); + /* Allocate a new empty request object */ + request = ghttp_request_new(); + /* Set the URI for the request object */ + if(ghttp_set_uri(request, allpath) == -1) + { + ret = -1; + } + /* Set the type for the request object */ + if(ghttp_set_type(request, (ghttp_type)mothod) == -1) + { + ret = -1; + } + /* Prepare the connection */ + ghttp_prepare(request); + /* Process the request */ + status = ghttp_process(request); + if(status == ghttp_error) + { + ret = -1; + } + /* OK, done */ + printf("Status code -> %d\n", ghttp_status_code(request)); + /* Get the response for the request */ + buf = ghttp_get_body(request); + responsebuf = buf; + /* Get the response for the request*/ + bytes_read = ghttp_get_body_len(request); + *responselen = bytes_read; + printf("%s\n", buf); + /* Destroy the request. This closes any file descriptors that may be open and will free any memory associated with the request. */ + return ret; +} + diff --git a/dynamic_library_test/request_send.so b/dynamic_library_test/request_send.so new file mode 100755 index 0000000000000000000000000000000000000000..ad3e04a3b00b758af8e53fd4d2a2bbfde404526b GIT binary patch literal 15328 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 Jbyv=4{U;Fq%|HME literal 0 HcmV?d00001 From ac78b78832e87075ba279b3bd8bea37f2d511616 Mon Sep 17 00:00:00 2001 From: baichuan Date: Thu, 23 Apr 2015 01:55:57 +0800 Subject: [PATCH 3/4] Add dynamic library header file --- dynamic_library_test/Makefile | 2 +- dynamic_library_test/http_request.c | 7 +------ dynamic_library_test/http_request.h | 12 ++++++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 dynamic_library_test/http_request.h diff --git a/dynamic_library_test/Makefile b/dynamic_library_test/Makefile index 5075c11..65b1a99 100644 --- a/dynamic_library_test/Makefile +++ b/dynamic_library_test/Makefile @@ -1,5 +1,5 @@ all: - gcc -g -Wall -shared -fPIC -o request_send.so -I../lib/include/ -L../lib/ -lghttp http_request.c + gcc -g -Wall -shared -fPIC -o request_send.so -I../lib/include/ -L../lib/ -lghttp http_request.c http_request.h clean: rm request_send.so diff --git a/dynamic_library_test/http_request.c b/dynamic_library_test/http_request.c index bec33ee..7450b15 100644 --- a/dynamic_library_test/http_request.c +++ b/dynamic_library_test/http_request.c @@ -1,9 +1,4 @@ -#include -#include -#include "ghttp.h" - -//A simple example from doc/ghttp.html -//int main() +#include "http_request.h" ghttp_request *init_request() { diff --git a/dynamic_library_test/http_request.h b/dynamic_library_test/http_request.h new file mode 100644 index 0000000..e1cf2af --- /dev/null +++ b/dynamic_library_test/http_request.h @@ -0,0 +1,12 @@ +#include +#include +#include "ghttp.h" + +ghttp_request *init_request(); + +char *send_request11(ghttp_request *request, char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen); + +void destory_request(ghttp_request *request); + +int send_request(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen); + From 00a08d03395127859995c3793eb9a928069dbb80 Mon Sep 17 00:00:00 2001 From: baichuan Date: Thu, 23 Apr 2015 14:48:01 +0800 Subject: [PATCH 4/4] Add test for so --- dynamic_library_test/Makefile | 7 +- dynamic_library_test/build_test_mothod.txt | 1 + dynamic_library_test/ghttp.h | 263 ++++++++++++++++++ dynamic_library_test/ghttp_constants.h | 105 +++++++ dynamic_library_test/http_request.c | 176 +++++++++++- dynamic_library_test/http_request.h | 17 +- dynamic_library_test/include/ghttp.h | 263 ++++++++++++++++++ .../include/ghttp_constants.h | 105 +++++++ dynamic_library_test/libghttp.a | Bin 0 -> 199714 bytes dynamic_library_test/test.c | 15 + lib/libghttp.a | Bin 199714 -> 199714 bytes test/http_request | Bin 0 -> 115452 bytes 12 files changed, 937 insertions(+), 15 deletions(-) create mode 100644 dynamic_library_test/build_test_mothod.txt create mode 100755 dynamic_library_test/ghttp.h create mode 100755 dynamic_library_test/ghttp_constants.h create mode 100755 dynamic_library_test/include/ghttp.h create mode 100755 dynamic_library_test/include/ghttp_constants.h create mode 100644 dynamic_library_test/libghttp.a create mode 100644 dynamic_library_test/test.c create mode 100755 test/http_request diff --git a/dynamic_library_test/Makefile b/dynamic_library_test/Makefile index 65b1a99..a90b7f9 100644 --- a/dynamic_library_test/Makefile +++ b/dynamic_library_test/Makefile @@ -1,5 +1,8 @@ all: - gcc -g -Wall -shared -fPIC -o request_send.so -I../lib/include/ -L../lib/ -lghttp http_request.c http_request.h + gcc -g -Wall -shared -fPIC -o librequestsend.so -I../lib/include/ -L../lib/ -lghttp http_request.c http_request.h + +with-debug: + gcc -g -Wall -DDEBUG_MSG -shared -fPIC -o librequestsend.so -I../lib/include/ -L../lib/ -lghttp http_request.c http_request.h clean: - rm request_send.so + rm *.so diff --git a/dynamic_library_test/build_test_mothod.txt b/dynamic_library_test/build_test_mothod.txt new file mode 100644 index 0000000..0111f14 --- /dev/null +++ b/dynamic_library_test/build_test_mothod.txt @@ -0,0 +1 @@ +gcc -o test test.c http_request.h ./librequestsend.so ./libghttp.a diff --git a/dynamic_library_test/ghttp.h b/dynamic_library_test/ghttp.h new file mode 100755 index 0000000..08a68f6 --- /dev/null +++ b/dynamic_library_test/ghttp.h @@ -0,0 +1,263 @@ +/* + * ghttp.h -- A public interface to common http functions + * Created: Christopher Blizzard , 21-Aug-1998 + * + * Copyright (C) 1998 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GHTTP_H +#define GHTTP_H + +#include "ghttp_constants.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct _ghttp_request ghttp_request; + +typedef enum ghttp_type_tag +{ + ghttp_type_get = 0, + ghttp_type_options, + ghttp_type_head, + ghttp_type_post, + ghttp_type_put, + ghttp_type_delete, + ghttp_type_trace, + ghttp_type_connect, + ghttp_type_propfind, + ghttp_type_proppatch, + ghttp_type_mkcol, + ghttp_type_copy, + ghttp_type_move, + ghttp_type_lock, + ghttp_type_unlock +} ghttp_type; + +typedef enum ghttp_sync_mode_tag +{ + ghttp_sync = 0, + ghttp_async +} ghttp_sync_mode; + +typedef enum ghttp_status_tag +{ + ghttp_error = -1, + ghttp_not_done, + ghttp_done +} ghttp_status; + +typedef enum ghttp_proc_tag +{ + ghttp_proc_none = 0, + ghttp_proc_request, + ghttp_proc_response_hdrs, + ghttp_proc_response +} ghttp_proc; + +typedef struct ghttp_current_status_tag +{ + ghttp_proc proc; /* what's it doing? */ + int bytes_read; /* how many bytes have been read? */ + int bytes_total; /* how many total */ +} ghttp_current_status; + +/* create a new request object */ +ghttp_request * +ghttp_request_new(void); + +/* delete a current request object */ +void +ghttp_request_destroy(ghttp_request *a_request); + +/* Validate a uri + * This will return -1 if a uri is invalid + */ +int +ghttp_uri_validate(char *a_uri); + +/* Set a uri in a request + * This will return -1 if the uri is invalid + */ + +int +ghttp_set_uri(ghttp_request *a_request, char *a_uri); + +/* Set a proxy for a request + * This will return -1 if the uri is invalid + */ + +int +ghttp_set_proxy(ghttp_request *a_request, char *a_uri); + +/* Set a request type + * This will return -1 if the request type is invalid or + * unsupported + */ + +int +ghttp_set_type(ghttp_request *a_request, ghttp_type a_type); + +/* Set the body. + * This will return -1 if the request type doesn't support it + */ + +int +ghttp_set_body(ghttp_request *a_request, char *a_body, int a_len); + +/* Set whether or not you want to use sync or async mode. + */ + +int +ghttp_set_sync(ghttp_request *a_request, + ghttp_sync_mode a_mode); + +/* Prepare a request. + * Call this before trying to process a request or if you change the + * uri. + */ + +int +ghttp_prepare(ghttp_request *a_request); + +/* Set the chunk size + * You might want to do this to optimize for different connection speeds. + */ + +void +ghttp_set_chunksize(ghttp_request *a_request, int a_size); + +/* Set a random request header + */ + +void +ghttp_set_header(ghttp_request *a_request, + const char *a_hdr, const char *a_val); + +/* Process a request + */ + +ghttp_status +ghttp_process(ghttp_request *a_request); + +/* Get the status of a request + */ + +ghttp_current_status +ghttp_get_status(ghttp_request *a_request); + +/* Flush the received data (so far) into the response body. This is + * useful for asynchronous requests with large responses: you can + * periodically flush the response buffer and parse the data that's + * arrived so far. + */ + +void +ghttp_flush_response_buffer(ghttp_request *a_request); + +/* Get the value of a random response header + */ + +const char * +ghttp_get_header(ghttp_request *a_request, + const char *a_hdr); + +/* Get the list of headers that were returned in the response. You + must free the returned string values. This function will return 0 + on success, -1 on some kind of error. */ +int +ghttp_get_header_names(ghttp_request *a_request, + char ***a_hdrs, int *a_num_hdrs); + +/* Abort a currently running request. */ +int +ghttp_close(ghttp_request *a_request); + +/* Clean a request + */ +void +ghttp_clean(ghttp_request *a_request); + +/* Get the socket associated with a particular connection + */ + +int +ghttp_get_socket(ghttp_request *a_request); + +/* get the return entity body + */ + +char * +ghttp_get_body(ghttp_request *a_request); + +/* get the returned length + */ + +int +ghttp_get_body_len(ghttp_request *a_request); + +/* Get an error message for a request that has failed. + */ + +const char * +ghttp_get_error(ghttp_request *a_request); + +/* Parse a date string that is one of the standard + * date formats + */ + +time_t +ghttp_parse_date(char *a_date); + +/* Return the status code. + */ + +int +ghttp_status_code(ghttp_request *a_request); + +/* Return the reason phrase. + */ + +const char * +ghttp_reason_phrase(ghttp_request *a_request); + +/* Set your username/password pair + */ + +int +ghttp_set_authinfo(ghttp_request *a_request, + const char *a_user, + const char *a_pass); + + + /* Set your username/password pair for proxy + */ + +int +ghttp_set_proxy_authinfo(ghttp_request *a_request, + const char *a_user, + const char *a_pass); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* GHTTP_H */ diff --git a/dynamic_library_test/ghttp_constants.h b/dynamic_library_test/ghttp_constants.h new file mode 100755 index 0000000..7e1d07a --- /dev/null +++ b/dynamic_library_test/ghttp_constants.h @@ -0,0 +1,105 @@ +/* + * ghttp_constants.h -- definitions for char constants that people + * might want to use + * Created: Christopher Blizzard + * + * Copyright (C) 1998 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GHTTP_CONSTANTS_H +#define GHTTP_CONSTANTS_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +extern const char http_hdr_Allow[]; +extern const char http_hdr_Content_Encoding[]; +extern const char http_hdr_Content_Language[]; +extern const char http_hdr_Content_Length[]; +extern const char http_hdr_Content_Location[]; +extern const char http_hdr_Content_MD5[]; +extern const char http_hdr_Content_Range[]; +extern const char http_hdr_Content_Type[]; +extern const char http_hdr_Expires[]; +extern const char http_hdr_Last_Modified[]; + +/* general headers */ + +extern const char http_hdr_Cache_Control[]; +extern const char http_hdr_Connection[]; +extern const char http_hdr_Date[]; +extern const char http_hdr_Pragma[]; +extern const char http_hdr_Transfer_Encoding[]; +extern const char http_hdr_Update[]; +extern const char http_hdr_Trailer[]; +extern const char http_hdr_Via[]; + +/* request headers */ + +extern const char http_hdr_Accept[]; +extern const char http_hdr_Accept_Charset[]; +extern const char http_hdr_Accept_Encoding[]; +extern const char http_hdr_Accept_Language[]; +extern const char http_hdr_Authorization[]; +extern const char http_hdr_Expect[]; +extern const char http_hdr_From[]; +extern const char http_hdr_Host[]; +extern const char http_hdr_If_Modified_Since[]; +extern const char http_hdr_If_Match[]; +extern const char http_hdr_If_None_Match[]; +extern const char http_hdr_If_Range[]; +extern const char http_hdr_If_Unmodified_Since[]; +extern const char http_hdr_Max_Forwards[]; +extern const char http_hdr_Proxy_Authorization[]; +extern const char http_hdr_Range[]; +extern const char http_hdr_Referrer[]; +extern const char http_hdr_TE[]; +extern const char http_hdr_User_Agent[]; + +/* response headers */ + +extern const char http_hdr_Accept_Ranges[]; +extern const char http_hdr_Age[]; +extern const char http_hdr_ETag[]; +extern const char http_hdr_Location[]; +extern const char http_hdr_Retry_After[]; +extern const char http_hdr_Server[]; +extern const char http_hdr_Vary[]; +extern const char http_hdr_Warning[]; +extern const char http_hdr_WWW_Authenticate[]; + +/* Other headers */ + +extern const char http_hdr_Set_Cookie[]; + +/* WebDAV headers */ + +extern const char http_hdr_DAV[]; +extern const char http_hdr_Depth[]; +extern const char http_hdr_Destination[]; +extern const char http_hdr_If[]; +extern const char http_hdr_Lock_Token[]; +extern const char http_hdr_Overwrite[]; +extern const char http_hdr_Status_URI[]; +extern const char http_hdr_Timeout[]; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* GHTTP_CONSTANTS_H */ diff --git a/dynamic_library_test/http_request.c b/dynamic_library_test/http_request.c index 7450b15..41a2f38 100644 --- a/dynamic_library_test/http_request.c +++ b/dynamic_library_test/http_request.c @@ -1,14 +1,20 @@ +#include #include "http_request.h" ghttp_request *init_request() { ghttp_request *request = NULL; + #ifdef DEBUG_MSG + openlog("http_request", LOG_PID, LOG_USER); + #endif /* Allocate a new empty request object */ request = ghttp_request_new(); if (request == NULL) { + LOG_PRINTF("Error: Func: %s Acclocate new empty request is NULL\n", __func__); return NULL; } + LOG_PRINTF("Info: Func: %s Acclocate new empty request is ok. \n", __func__); return request; } @@ -24,10 +30,14 @@ void destory_request(ghttp_request *request) { ghttp_request_destroy(request); } + LOG_PRINTF("Info: Func: %s Destroy request is ok. \n", __func__); + #ifdef DEBUG_MSG + closelog(); + #endif return ; } -int send_request(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen) +ghttp_request *send_request(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen) { //char *uri = "http://www.solidot.org"; /* This is the http request object */ @@ -36,23 +46,60 @@ int send_request(char *uri, int urilen, int mothod, char *path, int pathlen, cha char *buf = NULL, *allpath = NULL; int bytes_read = 0, ret = 0, allpathlen = urilen + pathlen; - if(uri == NULL || urilen == 0 || path == NULL || pathlen == 0 || body == NULL || bodylen == 0) + if(uri == NULL || urilen == 0 ) { ret = -1; + LOG_PRINTF("Error: Func: %sAcclocate new empty request is NULL\n", __func__); + return request; } allpath = calloc(1, allpathlen + 1); - snprintf(allpath, allpathlen, "%s%s", uri, path); + snprintf(allpath, allpathlen+1, "%s%s", uri, path); + LOG_PRINTF("Info: Func: %s allpath is %s allpath len is %d uri is %s. \n", __func__, allpath, pathlen, uri); /* Allocate a new empty request object */ request = ghttp_request_new(); + if (request == NULL) + { + ret = -1; + LOG_PRINTF("Error: Func: %s new request return error.\n", __func__); + return request; + } + else + { + LOG_PRINTF("Info: Func: %s Acclocate new empty request is ok. \n", __func__); + } /* Set the URI for the request object */ if(ghttp_set_uri(request, allpath) == -1) { ret = -1; + LOG_PRINTF("Error: Func: %s set uri return error.\n", __func__); + return request; } + LOG_PRINTF("Info: Func: %s set uri is ok. \n", __func__); /* Set the type for the request object */ if(ghttp_set_type(request, (ghttp_type)mothod) == -1) { ret = -1; + LOG_PRINTF("Error: Func: %s set type return error.\n", __func__); + return request; + } + LOG_PRINTF("Info: Func: %s set type is ok. \n", __func__); + if(body != NULL && bodylen != 0) + { + LOG_PRINTF("Info: Func: %s set body is %s \n", __func__, body); + ret = ghttp_set_body(request,body, bodylen); + if (ret == -1) + { + LOG_PRINTF("Error: Func: %s set body return error.\n", __func__); + return request; + } + else + { + LOG_PRINTF("Info: Func: %s set body is ok. \n", __func__); + } + } + else + { + LOG_PRINTF("Info: Func: %s not set body.\n", __func__); } /* Prepare the connection */ ghttp_prepare(request); @@ -61,17 +108,128 @@ int send_request(char *uri, int urilen, int mothod, char *path, int pathlen, cha if(status == ghttp_error) { ret = -1; + LOG_PRINTF("Error: Func: %s ghttp_process return error.\n", __func__); + return request; } /* OK, done */ - printf("Status code -> %d\n", ghttp_status_code(request)); + LOG_PRINTF("Info: Func: %s Status code -> %d\n", __func__, ghttp_status_code(request)); /* Get the response for the request */ buf = ghttp_get_body(request); - responsebuf = buf; - /* Get the response for the request*/ bytes_read = ghttp_get_body_len(request); + if(buf != NULL && bytes_read >= 0 ) + { + memcpy(responsebuf, buf, *responselen); + } + /* Get the response for the request*/ *responselen = bytes_read; - printf("%s\n", buf); - /* Destroy the request. This closes any file descriptors that may be open and will free any memory associated with the request. */ - return ret; + LOG_PRINTF("Info: Func: %s get_body len is %d response is: %s \n", __func__, bytes_read, buf); + //printf("%s\n", buf); + return request; +} + +ghttp_request *send_request_async(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen) +{ + //char *uri = "http://www.solidot.org"; + /* This is the http request object */ + ghttp_request *request = NULL; + ghttp_status status; + char *buf = NULL, *allpath = NULL; + int bytes_read = 0, ret = 0, allpathlen = urilen + pathlen, get_response_len = 0; + + if(uri == NULL || urilen == 0 ) + { + ret = -1; + LOG_PRINTF("Error: Func: %sAcclocate new empty request is NULL\n", __func__); + return request; + } + allpath = calloc(1, allpathlen + 1); + snprintf(allpath, allpathlen+1, "%s%s", uri, path); + LOG_PRINTF("Info: Func: %s allpath is %s allpath len is %d uri is %s. \n", __func__, allpath, pathlen, uri); + /* Allocate a new empty request object */ + request = ghttp_request_new(); + if (request == NULL) + { + ret = -1; + LOG_PRINTF("Error: Func: %s new request return error.\n", __func__); + return request; + } + else + { + LOG_PRINTF("Info: Func: %s Acclocate new empty request is ok. \n", __func__); + } + /* Set the URI for the request object */ + if(ghttp_set_uri(request, allpath) == -1) + { + ret = -1; + LOG_PRINTF("Error: Func: %s set uri return error.\n", __func__); + return request; + } + LOG_PRINTF("Info: Func: %s set uri is ok. \n", __func__); + /* Set the type for the request object */ + if(ghttp_set_type(request, (ghttp_type)mothod) == -1) + { + ret = -1; + LOG_PRINTF("Error: Func: %s set type return error.\n", __func__); + return request; + } + LOG_PRINTF("Info: Func: %s set type is ok. \n", __func__); + if(body != NULL && bodylen != 0) + { + LOG_PRINTF("Info: Func: %s set body is %s \n", __func__, body); + ret = ghttp_set_body(request,body, bodylen); + if (ret == -1) + { + LOG_PRINTF("Error: Func: %s set body return error.\n", __func__); + return request; + } + else + { + LOG_PRINTF("Info: Func: %s set body is ok. \n", __func__); + } + } + else + { + LOG_PRINTF("Info: Func: %s not set body.\n", __func__); + } + /* Set async request */ + ghttp_set_sync(request, ghttp_async); + /* Prepare the connection */ + ghttp_prepare(request); + while(1) + { + /* Process the request */ + status = ghttp_process(request); + if(status == ghttp_error) + { + ret = -1; + LOG_PRINTF("Error: Func: %s ghttp_process return error.\n", __func__); + break; + } + /* OK, done */ + LOG_PRINTF("Info: Func: %s Status code -> %d\n", __func__, ghttp_status_code(request)); + /* Get the response for the request */ + buf = ghttp_get_body(request); + /* Get the response for the request*/ + bytes_read = ghttp_get_body_len(request); + get_response_len += bytes_read; + if(get_response_len >= *responselen) + { + LOG_PRINTF("Info: Func: %s get_response_len is gt responselen ---break!!\n", __func__); + break; + } + else + { + memcpy(responsebuf, buf, bytes_read); + responsebuf = responsebuf + bytes_read; + } + *responselen = bytes_read; + LOG_PRINTF("Info: Func: %s get_body len is %d response is: %s \n", __func__, bytes_read, buf); + if (status == ghttp_done) + { + break; + } + } + //printf("%s\n", buf); + return request; } diff --git a/dynamic_library_test/http_request.h b/dynamic_library_test/http_request.h index e1cf2af..d510062 100644 --- a/dynamic_library_test/http_request.h +++ b/dynamic_library_test/http_request.h @@ -1,12 +1,21 @@ #include #include +#include #include "ghttp.h" -ghttp_request *init_request(); +#ifdef DEBUG_MSG +#define LOG_PRINTF(fmt, arg...) syslog(LOG_DEBUG, fmt, arg) +#else +#define LOG_PRINTF(fmt, arg...) +#endif -char *send_request11(ghttp_request *request, char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen); +//ghttp_request *init_request(); -void destory_request(ghttp_request *request); +//char *send_request11(ghttp_request *request, char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen); + +//mothod的值请参看Readme的枚举进行对应的整数值,uri和urilen必须有值且正确,若无path则path为NULL,若无body,body为NULL,responsebuf是想要接收的回应的空间,responselen是想要得到回应的长度 +ghttp_request * send_request(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen); -int send_request(char *uri, int urilen, int mothod, char *path, int pathlen, char *body, int bodylen, char *responsebuf, int *responselen); +//对send_request产生的ghttp_request的资源进行释放` +void destory_request(ghttp_request *request); diff --git a/dynamic_library_test/include/ghttp.h b/dynamic_library_test/include/ghttp.h new file mode 100755 index 0000000..08a68f6 --- /dev/null +++ b/dynamic_library_test/include/ghttp.h @@ -0,0 +1,263 @@ +/* + * ghttp.h -- A public interface to common http functions + * Created: Christopher Blizzard , 21-Aug-1998 + * + * Copyright (C) 1998 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GHTTP_H +#define GHTTP_H + +#include "ghttp_constants.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct _ghttp_request ghttp_request; + +typedef enum ghttp_type_tag +{ + ghttp_type_get = 0, + ghttp_type_options, + ghttp_type_head, + ghttp_type_post, + ghttp_type_put, + ghttp_type_delete, + ghttp_type_trace, + ghttp_type_connect, + ghttp_type_propfind, + ghttp_type_proppatch, + ghttp_type_mkcol, + ghttp_type_copy, + ghttp_type_move, + ghttp_type_lock, + ghttp_type_unlock +} ghttp_type; + +typedef enum ghttp_sync_mode_tag +{ + ghttp_sync = 0, + ghttp_async +} ghttp_sync_mode; + +typedef enum ghttp_status_tag +{ + ghttp_error = -1, + ghttp_not_done, + ghttp_done +} ghttp_status; + +typedef enum ghttp_proc_tag +{ + ghttp_proc_none = 0, + ghttp_proc_request, + ghttp_proc_response_hdrs, + ghttp_proc_response +} ghttp_proc; + +typedef struct ghttp_current_status_tag +{ + ghttp_proc proc; /* what's it doing? */ + int bytes_read; /* how many bytes have been read? */ + int bytes_total; /* how many total */ +} ghttp_current_status; + +/* create a new request object */ +ghttp_request * +ghttp_request_new(void); + +/* delete a current request object */ +void +ghttp_request_destroy(ghttp_request *a_request); + +/* Validate a uri + * This will return -1 if a uri is invalid + */ +int +ghttp_uri_validate(char *a_uri); + +/* Set a uri in a request + * This will return -1 if the uri is invalid + */ + +int +ghttp_set_uri(ghttp_request *a_request, char *a_uri); + +/* Set a proxy for a request + * This will return -1 if the uri is invalid + */ + +int +ghttp_set_proxy(ghttp_request *a_request, char *a_uri); + +/* Set a request type + * This will return -1 if the request type is invalid or + * unsupported + */ + +int +ghttp_set_type(ghttp_request *a_request, ghttp_type a_type); + +/* Set the body. + * This will return -1 if the request type doesn't support it + */ + +int +ghttp_set_body(ghttp_request *a_request, char *a_body, int a_len); + +/* Set whether or not you want to use sync or async mode. + */ + +int +ghttp_set_sync(ghttp_request *a_request, + ghttp_sync_mode a_mode); + +/* Prepare a request. + * Call this before trying to process a request or if you change the + * uri. + */ + +int +ghttp_prepare(ghttp_request *a_request); + +/* Set the chunk size + * You might want to do this to optimize for different connection speeds. + */ + +void +ghttp_set_chunksize(ghttp_request *a_request, int a_size); + +/* Set a random request header + */ + +void +ghttp_set_header(ghttp_request *a_request, + const char *a_hdr, const char *a_val); + +/* Process a request + */ + +ghttp_status +ghttp_process(ghttp_request *a_request); + +/* Get the status of a request + */ + +ghttp_current_status +ghttp_get_status(ghttp_request *a_request); + +/* Flush the received data (so far) into the response body. This is + * useful for asynchronous requests with large responses: you can + * periodically flush the response buffer and parse the data that's + * arrived so far. + */ + +void +ghttp_flush_response_buffer(ghttp_request *a_request); + +/* Get the value of a random response header + */ + +const char * +ghttp_get_header(ghttp_request *a_request, + const char *a_hdr); + +/* Get the list of headers that were returned in the response. You + must free the returned string values. This function will return 0 + on success, -1 on some kind of error. */ +int +ghttp_get_header_names(ghttp_request *a_request, + char ***a_hdrs, int *a_num_hdrs); + +/* Abort a currently running request. */ +int +ghttp_close(ghttp_request *a_request); + +/* Clean a request + */ +void +ghttp_clean(ghttp_request *a_request); + +/* Get the socket associated with a particular connection + */ + +int +ghttp_get_socket(ghttp_request *a_request); + +/* get the return entity body + */ + +char * +ghttp_get_body(ghttp_request *a_request); + +/* get the returned length + */ + +int +ghttp_get_body_len(ghttp_request *a_request); + +/* Get an error message for a request that has failed. + */ + +const char * +ghttp_get_error(ghttp_request *a_request); + +/* Parse a date string that is one of the standard + * date formats + */ + +time_t +ghttp_parse_date(char *a_date); + +/* Return the status code. + */ + +int +ghttp_status_code(ghttp_request *a_request); + +/* Return the reason phrase. + */ + +const char * +ghttp_reason_phrase(ghttp_request *a_request); + +/* Set your username/password pair + */ + +int +ghttp_set_authinfo(ghttp_request *a_request, + const char *a_user, + const char *a_pass); + + + /* Set your username/password pair for proxy + */ + +int +ghttp_set_proxy_authinfo(ghttp_request *a_request, + const char *a_user, + const char *a_pass); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* GHTTP_H */ diff --git a/dynamic_library_test/include/ghttp_constants.h b/dynamic_library_test/include/ghttp_constants.h new file mode 100755 index 0000000..7e1d07a --- /dev/null +++ b/dynamic_library_test/include/ghttp_constants.h @@ -0,0 +1,105 @@ +/* + * ghttp_constants.h -- definitions for char constants that people + * might want to use + * Created: Christopher Blizzard + * + * Copyright (C) 1998 Free Software Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GHTTP_CONSTANTS_H +#define GHTTP_CONSTANTS_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +extern const char http_hdr_Allow[]; +extern const char http_hdr_Content_Encoding[]; +extern const char http_hdr_Content_Language[]; +extern const char http_hdr_Content_Length[]; +extern const char http_hdr_Content_Location[]; +extern const char http_hdr_Content_MD5[]; +extern const char http_hdr_Content_Range[]; +extern const char http_hdr_Content_Type[]; +extern const char http_hdr_Expires[]; +extern const char http_hdr_Last_Modified[]; + +/* general headers */ + +extern const char http_hdr_Cache_Control[]; +extern const char http_hdr_Connection[]; +extern const char http_hdr_Date[]; +extern const char http_hdr_Pragma[]; +extern const char http_hdr_Transfer_Encoding[]; +extern const char http_hdr_Update[]; +extern const char http_hdr_Trailer[]; +extern const char http_hdr_Via[]; + +/* request headers */ + +extern const char http_hdr_Accept[]; +extern const char http_hdr_Accept_Charset[]; +extern const char http_hdr_Accept_Encoding[]; +extern const char http_hdr_Accept_Language[]; +extern const char http_hdr_Authorization[]; +extern const char http_hdr_Expect[]; +extern const char http_hdr_From[]; +extern const char http_hdr_Host[]; +extern const char http_hdr_If_Modified_Since[]; +extern const char http_hdr_If_Match[]; +extern const char http_hdr_If_None_Match[]; +extern const char http_hdr_If_Range[]; +extern const char http_hdr_If_Unmodified_Since[]; +extern const char http_hdr_Max_Forwards[]; +extern const char http_hdr_Proxy_Authorization[]; +extern const char http_hdr_Range[]; +extern const char http_hdr_Referrer[]; +extern const char http_hdr_TE[]; +extern const char http_hdr_User_Agent[]; + +/* response headers */ + +extern const char http_hdr_Accept_Ranges[]; +extern const char http_hdr_Age[]; +extern const char http_hdr_ETag[]; +extern const char http_hdr_Location[]; +extern const char http_hdr_Retry_After[]; +extern const char http_hdr_Server[]; +extern const char http_hdr_Vary[]; +extern const char http_hdr_Warning[]; +extern const char http_hdr_WWW_Authenticate[]; + +/* Other headers */ + +extern const char http_hdr_Set_Cookie[]; + +/* WebDAV headers */ + +extern const char http_hdr_DAV[]; +extern const char http_hdr_Depth[]; +extern const char http_hdr_Destination[]; +extern const char http_hdr_If[]; +extern const char http_hdr_Lock_Token[]; +extern const char http_hdr_Overwrite[]; +extern const char http_hdr_Status_URI[]; +extern const char http_hdr_Timeout[]; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* GHTTP_CONSTANTS_H */ diff --git a/dynamic_library_test/libghttp.a b/dynamic_library_test/libghttp.a new file mode 100644 index 0000000000000000000000000000000000000000..9632431ab9682212593ecdee617fbf65fc922d91 GIT binary patch literal 199714 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 uam&52#7k6u=E$W_ literal 0 HcmV?d00001 diff --git a/dynamic_library_test/test.c b/dynamic_library_test/test.c new file mode 100644 index 0000000..5974dfb --- /dev/null +++ b/dynamic_library_test/test.c @@ -0,0 +1,15 @@ +#include +#include +#include "http_request.h" + +int main() +{ + char *uri = "http://www.solidot.org"; + char response[80*1024] = {0}; + int responselen = 80*1024; + ghttp_request *testreq = send_request(uri, strlen(uri), 0, NULL, 0, NULL, 0, response, &responselen); + int lenn = strlen(uri); + printf("response is %s len is %d lenn is %d\n", response, responselen, lenn); + destory_request(testreq); + return 0; +} diff --git a/lib/libghttp.a b/lib/libghttp.a index cee9928a4db3173ca534635ae801604ec86bdab2..9632431ab9682212593ecdee617fbf65fc922d91 100644 GIT binary patch delta 141 zcmZ29gJ;nUo(Zxnre;PK8x@anff>{F6B)%fGjS{KK;qgRj?{;9B{pyVRFMbfZU-v% v2xkQuU^v|%kx^{>q#cZja}fgK+xf$o3_=kCV%wuuGkIDg3+#Kwl%fg%Vo4~) delta 141 zcmZ29gJ;nUo(ZxnhL)Db8x@anff>{F6B)%fGjS{KK;qgRj?{;9B{pyVRFMbfZU-v% v2xkQuU^v|%kx^{>q#cZja}fgK+xf$o3_=kCV%wuuGkIDg3+#Kwl%fg%Wb-J_ diff --git a/test/http_request b/test/http_request new file mode 100755 index 0000000000000000000000000000000000000000..34f0618c9a3daf608c8462cb9efd6dba3e17a554 GIT binary patch literal 115452 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