⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ghttp.h

📁 完整实现http协议源代码(WINDOWS或LINUX平台均可移植使用),我在VC++上(不调用WINDOWS的HTTP的API)可实现XML文件下载等.
💻 H
字号:
/* * ghttp.h -- A public interface to common http functions * Created: Christopher Blizzard <blizzard@appliedtheory.com>, 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 <time.h>#ifdef __cplusplusextern "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 */voidghttp_request_destroy(ghttp_request *a_request);/* Validate a uri * This will return -1 if a uri is invalid */intghttp_uri_validate(char *a_uri);/* Set a uri in a request * This will return -1 if the uri is invalid */intghttp_set_uri(ghttp_request *a_request, char *a_uri);/* Set a proxy for a request * This will return -1 if the uri is invalid */intghttp_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 */intghttp_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 */intghttp_set_body(ghttp_request *a_request, char *a_body, int a_len);/* Set whether or not you want to use sync or async mode. */intghttp_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. */intghttp_prepare(ghttp_request *a_request);/* Set the chunk size * You might want to do this to optimize for different connection speeds. */voidghttp_set_chunksize(ghttp_request *a_request, int a_size);/* Set a random request header */voidghttp_set_header(ghttp_request *a_request,		 const char *a_hdr, const char *a_val);/* Process a request */ghttp_statusghttp_process(ghttp_request *a_request);/* Get the status of a request */ghttp_current_statusghttp_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. */voidghttp_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. */intghttp_get_header_names(ghttp_request *a_request,		       char ***a_hdrs, int *a_num_hdrs);/* Abort a currently running request.  */intghttp_close(ghttp_request *a_request);/* Clean a request */voidghttp_clean(ghttp_request *a_request);/* Get the socket associated with a particular connection */intghttp_get_socket(ghttp_request *a_request);/* get the return entity body */char *ghttp_get_body(ghttp_request *a_request);/* get the returned length */intghttp_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_tghttp_parse_date(char *a_date);/* Return the status code. */intghttp_status_code(ghttp_request *a_request);/* Return the reason phrase. */const char *ghttp_reason_phrase(ghttp_request *a_request);/* Set your username/password pair  */intghttp_set_authinfo(ghttp_request *a_request,		   const char *a_user,		   const char *a_pass);		    /* Set your username/password pair for proxy  */ intghttp_set_proxy_authinfo(ghttp_request *a_request,			 const char *a_user,			 const char *a_pass);#ifdef __cplusplus}#endif /* __cplusplus */#endif /* GHTTP_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -