亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? httpreq.c

?? www工具包. 這是W3C官方支持的www支撐庫(kù). 其中提供通用目的的客戶(hù)端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*								      HTTPReq.c**	HTTP REQUEST GENERATION****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTTPReq.c,v 2.62 2001/08/30 13:41:03 kahan Exp $****	This module implements the output stream for HTTP used for sending**	requests with or without a entity body.**** History:**	Jan 95 HFN	Written from scratch*//* Library Includes */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTTPGen.h"#include "HTTPUtil.h"#include "HTTPReq.h"					       /* Implements */#define PUTC(c)		(*me->target->isa->put_character)(me->target, c)#define PUTS(s)		(*me->target->isa->put_string)(me->target, s)#define PUTBLOCK(b, l)	(*me->target->isa->put_block)(me->target, b, l)struct _HTStream {    const HTStreamClass *	isa;    HTStream *		  	target;    HTRequest *			request;    SOCKET			sockfd;    int				version;    int 			state;        char *			url;    BOOL			transparent;};/* ------------------------------------------------------------------------- *//* 			    HTTP Output Request Stream			     *//* ------------------------------------------------------------------------- *//*	HTTP09Request**	-------------**	Makes a HTTP/0.9 request*/PRIVATE int HTTP09Request (HTStream * me, HTRequest * request){    HTParentAnchor * anchor = HTRequest_anchor(request);    char * addr = HTAnchor_physical(anchor);    if (!me->url) me->url = HTParse(addr, "", PARSE_PATH|PARSE_PUNCTUATION);    if (me->state == 0) {	int status = PUTS("GET ");	if (status != HT_OK) return status;	me->state++;    }    if (me->state == 1) {	int status = PUTS(me->url);	if (status != HT_OK) return status;	me->state++;    }    PUTC(CR);    PUTC(LF);    HTTRACE(PROT_TRACE, "HTTP........ Generating HTTP/0.9 Request\n");    return HT_OK;}/*	HTTPMakeRequest**	---------------**	Makes a HTTP/1.0-1.1 request header.*/PRIVATE int HTTPMakeRequest (HTStream * me, HTRequest * request){    HTMethod method = HTRequest_method(request);    HTRqHd request_mask = HTRequest_rqHd(request);    HTParentAnchor * anchor = HTRequest_anchor(request);    char * etag = HTAnchor_etag(anchor);    char crlf[3];    char qstr[10];    *crlf = CR; *(crlf+1) = LF; *(crlf+2) = '\0';    /* Generate the HTTP/1.x RequestLine */    if (me->state == 0) {	if (method != METHOD_INVALID) {	    PUTS(HTMethod_name(method));	    PUTC(' ');	} else	    PUTS("GET ");	me->state++;    }    /*    **  Generate the Request URI. If we are using full request URI then it's    **  easy. Otherwise we must filter out the path part of the URI.    **  In case it's a OPTIONS request then if there is no pathinfo then use    **  a * instead. If we use a method different from GET or HEAD then use    **  the content-location if available.    */    if (me->state == 1) {	char * abs_location = NULL;	char * addr = HTAnchor_physical(anchor);	char * location;        /* JK: If the application specified a content-location (which is           stored in the request in default put-name!), we use it instead           of the URL that's being saved to. This is like having a user           defined Content-Location */        location = HTRequest_defaultPutName (request);        if (location)	  {	    if (HTURL_isAbsolute (location))	      {		char * relative;		relative = HTRelative (location, location);		abs_location = HTParse (relative + 2, addr, PARSE_ALL);		HT_FREE (relative);	      }	    else	      abs_location = HTParse (location, addr, PARSE_ALL);	    addr = abs_location;	  }#if 0	/*	**  We don't use the content-location any more as it is superseeded	**  by etags and the combination of the two might do more harm than	**  good (The etag is not guaranteed to be unique over multiple URIs)	*/	/*	**  If we are using a method different from HEAD and GET then use	**  the Content-Location if available, else the Request-URI.	*/	if (!HTMethod_isSafe(method)) {	    char * location = HTAnchor_location(anchor);	    if (location) {		if (HTURL_isAbsolute(location))		    addr = location;		else {		    /*		    **  We have a content-location but it is relative and		    **  must expand it either to the content-base or to		    **  the Request-URI itself.		    */		    char * base = HTAnchor_base(anchor);		    abs_location = HTParse(location, base, PARSE_ALL);		    addr = abs_location;		}	    }	}#endif	/*	**  If we are using a proxy or newer versions of HTTP then we can	**  send the full URL. Otherwise we only send the path.	*/	if (HTRequest_fullURI(request))	    StrAllocCopy(me->url, addr);	else {	    me->url = HTParse(addr, "", PARSE_PATH | PARSE_PUNCTUATION);	    if (method == METHOD_OPTIONS) {		/*		** We don't preserve the final slash or lack of same through		** out the code. This is mainly for optimization reasons		** but it gives a problem OPTIONS. We can either send a "*"		** or a "/" but not both. For now we send a "*".		*/		if (!strcmp(me->url, "/")) *me->url = '*';	    }	}	HT_FREE(abs_location);	me->state++;    }    /*    **  Now send the URL that we have put together    */    if (me->state == 2) {	int status = HT_OK;	if ((status = PUTS(me->url)) != HT_OK) return status;	me->state++;#if 0	fprintf(stderr, "Requesting '%s'\n", me->url);#endif    }    PUTC(' ');    /*    **  Send out the version number. If we know it is a HTTP/1.0 server we    **  are talking to then use HTTP/1.0, else use HTTP/1.1 as default version    **  number    */    if (me->version == HTTP_10)	PUTS(HTTP_VERSION_10);    else	PUTS(HTTP_VERSION);    PUTBLOCK(crlf, 2);    /* Request Headers */    if (request_mask & HT_C_ACCEPT_TYPE) {	HTFormat format = HTRequest_outputFormat(request);		/*	** If caller has specified a specific output format then use this.	** Otherwise use all the registered converters to generate the 	** accept header	*/	if (format == WWW_PRESENT) {	    int list;	    HTList *cur;	    BOOL first=YES;	    for (list=0; list<2; list++) {		if ((!list && ((cur = HTFormat_conversion()) != NULL)) ||		    (list && ((cur = HTRequest_conversion(request))!=NULL))) {		    HTPresentation * pres;		    while ((pres=(HTPresentation *) HTList_nextObject(cur))) {			if (pres->rep_out==WWW_PRESENT && pres->quality<=1.0) {			    if (first) {				PUTS("Accept: ");				first=NO;			    } else				PUTC(',');			    PUTS(HTAtom_name(pres->rep));			    if (pres->quality < 1.0 && pres->quality >= 0.0) {				sprintf(qstr, ";q=%1.1f", pres->quality);				PUTS(qstr);			    }			}		    }		}	    }	    if (!first) PUTBLOCK(crlf, 2);	} else {	    /*	    **  If we have an explicit output format then only send	    **  this one if not this is an internal libwww format	    **	of type www/<star>	    */	    if (!HTMIMEMatch(WWW_INTERNAL, format)) {		PUTS("Accept: ");		PUTS(HTAtom_name(format));		PUTBLOCK(crlf, 2);	    }	}	    }    if (request_mask & HT_C_ACCEPT_CHAR) {	int list;	HTList *cur;	BOOL first=YES;	for (list=0; list<2; list++) {	    if ((!list && ((cur = HTFormat_charset()) != NULL)) ||		(list && ((cur = HTRequest_charset(request)) != NULL))) {		HTAcceptNode *pres;		while ((pres = (HTAcceptNode *) HTList_nextObject(cur))) {		    if (first) {			PUTS("Accept-Charset: ");			first=NO;		    } else			PUTC(',');		    PUTS(HTAtom_name(pres->atom));		    if (pres->quality < 1.0 && pres->quality >= 0.0) {			sprintf(qstr, ";q=%1.1f", pres->quality);			PUTS(qstr);		    }		}	    }	}	if (!first) PUTBLOCK(crlf, 2);    }    if (request_mask & HT_C_ACCEPT_ENC) {	int list;	HTList *cur;	BOOL first=YES;	for (list=0; list<2; list++) {	    if ((!list && ((cur = HTFormat_contentCoding()) != NULL)) ||		(list && ((cur = HTRequest_encoding(request)) != NULL))) {		HTCoding * pres;		while ((pres = (HTCoding *) HTList_nextObject(cur))) {		    double quality = HTCoding_quality(pres);		    if (first) {			PUTS("Accept-Encoding: ");			first = NO;		    } else			PUTC(',');		    PUTS(HTCoding_name(pres));		    if (quality < 1.0 && quality >= 0.0) {			sprintf(qstr, ";q=%1.1f", quality);			PUTS(qstr);		    }		}	    }	}	if (!first) PUTBLOCK(crlf, 2);    }    if (request_mask & HT_C_ACCEPT_TE) {	int list;	HTList *cur;	BOOL first=YES;	for (list=0; list<2; list++) {	    if ((!list && ((cur = HTFormat_transferCoding()) != NULL)) ||		(list && ((cur = HTRequest_transfer(request)) != NULL))) {		HTCoding * pres;		while ((pres = (HTCoding *) HTList_nextObject(cur))) {		    double quality = HTCoding_quality(pres);		    const char * coding = HTCoding_name(pres);		    if (first) {			PUTS("TE: ");			first = NO;		    } else			PUTC(',');		    /* Special check for "chunked" which is translated to "trailers" */		    if (!strcasecomp(coding, "chunked"))			PUTS("trailers");		    else			PUTS(coding);		    if (quality < 1.0 && quality >= 0.0) {			sprintf(qstr, ";q=%1.1f", quality);			PUTS(qstr);		    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品视频网| 国内外成人在线视频| 欧美va天堂va视频va在线| 97se亚洲国产综合自在线 | 精品国产乱码久久久久久久久| 成人在线综合网| 天天色图综合网| 亚洲欧洲综合另类在线| 久久先锋影音av| 3d动漫精品啪啪| 91成人网在线| av在线不卡网| 国产成人综合网站| 另类成人小视频在线| 午夜激情一区二区| 一区二区三区四区在线播放| 国产欧美日韩综合精品一区二区| 日韩一区二区精品在线观看| 色婷婷国产精品| av网站一区二区三区| 国产一区二区女| 麻豆国产欧美日韩综合精品二区| 亚洲一级二级三级| 亚洲免费电影在线| 亚洲乱码中文字幕| 亚洲欧美在线另类| 中文字幕欧美日韩一区| 久久午夜电影网| 日韩欧美一级二级三级| 欧美一区二区三区四区久久| 欧美日韩五月天| 在线一区二区三区四区五区 | 91成人国产精品| 91无套直看片红桃| 成人成人成人在线视频| 国产馆精品极品| 成人性生交大合| 国产电影精品久久禁18| 风间由美性色一区二区三区| 国产一区91精品张津瑜| 国产成人三级在线观看| 国产传媒久久文化传媒| 国产夫妻精品视频| 成人国产精品免费观看动漫 | 色哟哟一区二区在线观看| 91色在线porny| 欧美在线观看视频在线| 欧美日韩中文国产| 91精品国产色综合久久| 日韩美女一区二区三区四区| 久久综合狠狠综合久久激情| 欧美激情在线免费观看| 亚洲天堂精品在线观看| 一区二区三区不卡在线观看| 婷婷夜色潮精品综合在线| 日韩av网站免费在线| 精品一区二区综合| 国产超碰在线一区| 色婷婷综合视频在线观看| 欧美三级资源在线| 日韩欧美亚洲一区二区| 国产日韩精品一区| 日韩一区中文字幕| 午夜欧美电影在线观看| 精品在线播放午夜| 成人免费毛片aaaaa**| 色妹子一区二区| 欧美一区二区三区婷婷月色| 亚洲国产电影在线观看| 亚洲一级不卡视频| 国产毛片精品视频| 91成人国产精品| 久久人人97超碰com| 最新中文字幕一区二区三区| 亚洲高清视频在线| 国产一区二区精品久久91| 99re热这里只有精品免费视频| 欧美天堂亚洲电影院在线播放| 精品卡一卡二卡三卡四在线| 最新国产精品久久精品| 七七婷婷婷婷精品国产| 成人在线视频一区二区| 在线观看日产精品| 久久亚洲捆绑美女| 午夜伊人狠狠久久| 成人午夜视频免费看| 91精品国产综合久久久蜜臀粉嫩 | 亚洲另类春色国产| 久草在线在线精品观看| 91影视在线播放| 久久一夜天堂av一区二区三区 | 国产精品亚洲人在线观看| 欧美在线不卡视频| 久久久久国产精品麻豆ai换脸 | 久久亚洲综合色| 视频一区二区三区在线| 成人毛片视频在线观看| 欧美一级理论片| 亚洲综合免费观看高清完整版| 国产精品亚洲午夜一区二区三区| 欧美久久免费观看| 亚洲免费看黄网站| 丁香婷婷综合色啪| 精品日韩在线观看| 亚洲午夜精品网| 91在线观看视频| 国产亚洲精品7777| 精品一区在线看| 91精品国产乱码久久蜜臀| 一区二区三区四区亚洲| 国产成人8x视频一区二区| 日韩免费高清av| 石原莉奈在线亚洲三区| 91免费观看视频在线| 欧美国产一区在线| 国产一区二区三区精品视频 | 国产精品乱码妇女bbbb| 黑人巨大精品欧美一区| 日韩午夜av一区| 日韩精品高清不卡| 欧美日韩一级二级三级| 亚洲一区在线观看视频| 色综合激情久久| 国产精品私房写真福利视频| 国产精品一区二区久久精品爱涩| 精品久久久久久久久久久久包黑料 | 日韩一区二区三区三四区视频在线观看 | 国产清纯白嫩初高生在线观看91| 免费在线成人网| 精品精品国产高清一毛片一天堂| 亚洲一区精品在线| 欧美电影一区二区三区| 免费在线一区观看| 亚洲日韩欧美一区二区在线| 91麻豆免费视频| 亚洲一区二区三区免费视频| 久久精品在线免费观看| 97se狠狠狠综合亚洲狠狠| 亚洲免费视频中文字幕| 欧美韩国日本综合| 亚洲国产中文字幕在线视频综合| 色综合色综合色综合| 亚洲狠狠丁香婷婷综合久久久| 一本久久精品一区二区| 一区二区久久久久久| 欧美综合色免费| 性做久久久久久久久| 欧美一区二区三区不卡| 久久国产视频网| 久久久青草青青国产亚洲免观| 国产福利一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 成人app网站| 亚洲女爱视频在线| 欧美日韩一级视频| 久久精品国产**网站演员| 久久久久久综合| 91在线视频播放| 亚洲一区视频在线| 日韩欧美亚洲一区二区| 国产乱人伦偷精品视频免下载 | 国产成人鲁色资源国产91色综 | 久久福利资源站| 国产日产欧美一区二区视频| 91在线视频官网| 日本伊人色综合网| 国产丝袜欧美中文另类| 91小宝寻花一区二区三区| 日本视频在线一区| 国产欧美精品区一区二区三区 | 色国产精品一区在线观看| 日韩高清在线观看| 欧美国产精品中文字幕| 欧美亚洲愉拍一区二区| 国产一区二区三区精品视频| 亚洲精品免费一二三区| 日韩欧美色综合| 久久精品夜夜夜夜久久| av成人老司机| 麻豆免费看一区二区三区| 成人欧美一区二区三区白人| 69堂亚洲精品首页| 成人黄色免费短视频| 日本成人中文字幕| 亚洲色图制服丝袜| 亚洲精品一区二区三区四区高清| 一本大道久久a久久精二百| 精品亚洲免费视频| 亚洲午夜在线视频| 国产精品久久一卡二卡| 精品奇米国产一区二区三区| 色婷婷精品大在线视频| 国产精品一区免费视频| 日韩av高清在线观看| 亚洲色图清纯唯美| 日本一区二区三级电影在线观看| 欧美日韩国产电影| 91亚洲精品久久久蜜桃网站| 国产一区二区久久| 日韩**一区毛片|