📄 httpreadwrite.h
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2000-2003 Intel Corporation // All rights reserved. //// Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: //// * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither name of Intel Corporation nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission.// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE./////////////////////////////////////////////////////////////////////////////#ifndef GENLIB_NET_HTTP_HTTPREADWRITE_H#define GENLIB_NET_HTTP_HTTPREADWRITE_H#include "config.h"#include "util.h"#include "sock.h"#include "httpparser.h"// timeout in secs#define HTTP_DEFAULT_TIMEOUT (30 + MINIMUM_DELAY)#ifdef __cplusplus#extern "C" {#endif/************************************************************************* Function: http_FixUrl * * Parameters: * IN uri_type* url ; URL to be validated and fixed* OUT uri_type* fixed_url ; URL after being fixed.* * Description: Validates URL * * Returns: * UPNP_E_INVALID_URL * UPNP_E_SUCCESS ************************************************************************/int http_FixUrl( IN uri_type* url, OUT uri_type* fixed_url );/************************************************************************* Function: http_FixStrUrl * * Parameters: * IN char* urlstr ; Character string as a URL * IN int urlstrlen ; Length of the character string * OUT uri_type* fixed_url ; Fixed and corrected URL* * Description: Parses URL and then validates URL * * Returns: * UPNP_E_INVALID_URL * UPNP_E_SUCCESS ************************************************************************/int http_FixStrUrl( IN char* urlstr, IN int urlstrlen, OUT uri_type* fixed_url );/************************************************************************* Function: http_Connect * * Parameters: * IN uri_type* destination_url ; URL containing destination information * OUT uri_type *url ; Fixed and corrected URL* * Description: Gets destination address from URL and then connects to the * remote end* * Returns: * socket descriptor on sucess * UPNP_E_OUTOF_SOCKET * UPNP_E_SOCKET_CONNECT on error ************************************************************************/int http_Connect( IN uri_type* destination_url, OUT uri_type *url );/************************************************************************* Function: http_RecvMessage * * Parameters: * IN SOCKINFO *info ; Socket information object* OUT http_parser_t* parser, HTTP parser object* IN http_method_t request_method ; HTTP request method * IN OUT int* timeout_secs ; time out * OUT int* http_error_code ; HTTP error code returned* * Description: Get the data on the socket and take actions based on the * read data to modify the parser objects buffer. If an error is reported * while parsing the data, the error code is passed in the http_errr_code * parameter* * Returns: * UPNP_E_BAD_HTTPMSG * UPNP_E_SUCCESS ************************************************************************/int http_RecvMessage( IN SOCKINFO *info, OUT http_parser_t* parser, IN http_method_t request_method, IN OUT int* timeout_secs, OUT int* http_error_code );/************************************************************************* Function: http_SendMessage * * Parameters: * IN SOCKINFO *info ; Socket information object* IN OUT int * TimeOut ; time out value * IN const char* fmt, ... Pattern format to take actions upon * * Description: Sends a message to the destination based on the * IN const char* fmt parameter * fmt types: * 'f': arg = const char * file name * 'm': arg1 = const char * mem_buffer; arg2= size_t buf_length * E.g.: * char *buf = "POST /xyz.cgi http/1.1\r\n\r\n"; * char *filename = "foo.dat"; * int status = http_SendMessage( tcpsock, "mf", * buf, strlen(buf), // args for memory buffer * filename ); // arg for file * * Returns: * UPNP_E_OUTOF_MEMORY * UPNP_E_FILE_READ_ERROR * UPNP_E_SUCCESS ************************************************************************/int http_SendMessage( IN SOCKINFO *info, IN OUT int* timeout_secs, IN const char* fmt, ... );/************************************************************************* Function: http_RequestAndResponse * * Parameters: * IN uri_type* destination ; Destination URI object which contains * remote IP address among other elements* IN const char* request ; Request to be sent* IN size_t request_length ; Length of the request* IN http_method_t req_method ; HTTP Request method* IN int timeout_secs ; time out value* OUT http_parser_t* response ; Parser object to receive the repsonse* * Description: Initiates socket, connects to the destination, sends a * request and waits for the response from the remote end * * Returns: * UPNP_E_SOCKET_ERROR * UPNP_E_SOCKET_CONNECT * Error Codes returned by http_SendMessage * Error Codes returned by http_RecvMessage ************************************************************************/int http_RequestAndResponse( IN uri_type* destination, IN const char* request, IN size_t request_length, IN http_method_t req_method, IN int timeout_secs, OUT http_parser_t* response );/************************************************************************* return codes:* 0 -- success* UPNP_E_OUTOF_MEMORY* UPNP_E_TIMEDOUT* UPNP_E_BAD_REQUEST* UPNP_E_BAD_RESPONSE* UPNP_E_INVALID_URL* UPNP_E_SOCKET_READ* UPNP_E_SOCKET_WRITE************************************************************************//************************************************************************* Function : http_Download** Parameters :* IN const char* url_str : String as a URL* IN int timeout_secs : time out value* OUT char** document : buffer to store the document extracted* from the donloaded message.* OUT int* doc_length : length of the extracted document* OUT char* content_type : Type of content** Description : Download the document message and extract the document * from the message.** Return : int;* UPNP_E_SUCCESS;* UPNP_E_INVALID_URL;* ** Note :************************************************************************/int http_Download( IN const char* url, IN int timeout_secs, OUT char** document, OUT int* doc_length, OUT char* content_type );/************************************************************************* Function : http_WriteHttpPost** Parameters :* IN void *Handle : Handle to the http post object* IN char *buf : Buffer to send to peer, if format used* is not UPNP_USING_CHUNKED, * IN unsigned int *size : Size of the data to be sent.* IN int timeout : time out value** Description : Formats data if format used is UPNP_USING_CHUNKED.* Writes data on the socket connected to the peer.** Return : int ;* UPNP_E_SUCCESS - On Success* UPNP_E_INVALID_PARAM - Invalid Parameter* -1 - On Socket Error.** Note :************************************************************************/int http_WriteHttpPost(IN void *Handle, IN char *buf, IN unsigned int *size, IN int timeout);/************************************************************************* Function : http_CloseHttpPost** Parameters :* IN void *Handle : Handle to the http post object* IN OUT int *httpStatus : HTTP status returned on receiving a* response message* IN int timeout : time out value** Description : Sends remaining data if using UPNP_USING_CHUNKED * format. Receives any more messages. Destroys socket and any socket* associated memory. Frees handle associated with the HTTP POST msg.** Return : int ;* UPNP_E_SUCCESS - On Sucess ;* UPNP_E_INVALID_PARAM - Invalid Parameter;** Note :************************************************************************/int http_CloseHttpPost(IN void *Handle,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -