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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? http.cpp.svn-base

?? wince c++ 下 開發的 rss 閱讀器源代碼
?? SVN-BASE
字號:
/**
 *  http.cpp
 *
 *  Copyright (C) 2008  David Andrs <pda@jasnapaka.com>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include "../StdAfx.h"
#include "../prssr.h"
#include "httpsock.h"
#include "http.h"
#include "../../share/helpers.h"
#include "../../share/str.h"

#ifdef MYDEBUG
#undef THIS_FILE
static TCHAR THIS_FILE[] = _T(__FILE__);
#include "../debug/crtdbg.h"
#define new MYDEBUG_NEW
#endif

////////////////////////////////////////////////////////////////////////////////////

static CString MethodStr[] = {
	_T("GET"),
	_T("POST")
};


////////////////////////////////////////////////////////////////////////////////////
// HttpHeader

CHttpHeader::CHttpHeader(const CString &name, const CString &value) {
	Name = name;
	Value = value;
}

////////////////////////////////////////////////////////////////////////////////////
// CHttpRequest

CHttpRequest::CHttpRequest(EHttpMethod method, const CString &object, LPCTSTR hostName/* = NULL*/) {
	Method = method;
	Object = object;

	if (hostName == NULL)
		StartLine.Format(_T("%s %s HTTP/1.1\r\n"), MethodStr[method], object);
	else
		StartLine.Format(_T("%s http://%s%s HTTP/1.1\r\n"), MethodStr[method], hostName, object);
}

CHttpRequest::~CHttpRequest() {
	while (!Headers.IsEmpty())
		delete Headers.RemoveHead();
}

void CHttpRequest::SetHeader(const CString &name, const CString &value) {
	POSITION pos = Headers.GetHeadPosition();
	while (pos != NULL) {
		CHttpHeader *hdr = Headers.GetNext(pos);
		if (hdr->Name.Compare(name) == 0) {
			hdr->Value = value;
			return;
		}
	}

	// not found -> add new
	Headers.AddTail(new CHttpHeader(name, value));
}

void CHttpRequest::SetHeader(const CString &name, int value) {
	CString sValue;
	sValue.Format(_T("%d"), value);

	SetHeader(name, sValue);
}

void CHttpRequest::AddHeaders(CList<CHttpHeader *, CHttpHeader *> &headers) {
	POSITION pos = headers.GetHeadPosition();
	while (pos != NULL) {
		CHttpHeader *hdr = headers.GetNext(pos);
		Headers.AddTail(new CHttpHeader(hdr->Name, hdr->Value));
	}
}

void CHttpRequest::AddCookies(CStringList &cookies) {
	POSITION pos = cookies.GetHeadPosition();
	while (pos != NULL) {
		CString c = cookies.GetNext(pos);
		Headers.AddTail(new CHttpHeader(_T("Cookie"), c));
	}
}

void CHttpRequest::Send(CHttpSocket *socket, CStringArray *addHttpHeaders/* = NULL*/) {
	char *buffer;

	// start line
	buffer = WCharToChar(StartLine);
	socket->Send(buffer, strlen(buffer));
	delete [] buffer;

	// headers
	POSITION pos = Headers.GetHeadPosition();
	while (pos != NULL) {
		CHttpHeader *header = Headers.GetNext(pos);

		CString sLine;
		sLine.Format(_T("%s: %s\r\n"), header->Name, header->Value);
		buffer = WCharToChar(sLine);
		socket->Send(buffer, strlen(buffer));
		delete [] buffer;
	}
	// additional HTTP headers
	if (addHttpHeaders != NULL) {
		for (int i = 0; i < addHttpHeaders->GetSize(); i++) {
			CString sLine;
			sLine.Format(_T("%s\r\n"), addHttpHeaders->GetAt(i));
			buffer = WCharToChar(sLine);
			socket->Send(buffer, strlen(buffer));
			delete [] buffer;
		}
	}
	// and CRLF
	socket->Send("\r\n", 2);

	// send POST body
	if (Method == HTTP_METHOD_POST) {
		// send the body
		buffer = WCharToChar(Body);
		socket->Send(buffer, strlen(buffer));
		delete [] buffer;
	}
}


////////////////////////////////////////////////////////////////////////////////////
// CHttpResponse

CHttpResponse::CHttpResponse() {
}

CHttpResponse::~CHttpResponse() {
	while (!Headers.IsEmpty())
		delete Headers.RemoveHead();
}

BOOL CHttpResponse::GetHeader(const CString &name, CString &value) {
	POSITION pos = Headers.GetHeadPosition();
	while (pos != NULL) {
		CHttpHeader *header = Headers.GetNext(pos);
		if (header->Name.CompareNoCase(name) == 0) {
			value = header->Value;
			return TRUE;
		}
	}

	return FALSE;
}

void CHttpResponse::SetStartLine(const CString &line) {
	StartLine = line;

	if (StartLine.Left(5).Compare(_T("HTTP/")) == 0 &&
		iswdigit(StartLine.GetAt(5)) &&
		StartLine.GetAt(6) == '.' &&
		iswdigit(StartLine.GetAt(7)))
	{
		swscanf(StartLine.Mid(8), _T("%d"), &StatusCode);
	}
	else
		StatusCode = 0;
}

void CHttpResponse::AddHeader(const CString &name, const CString &value) {
	Headers.AddTail(new CHttpHeader(name, value));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女淫视频| 亚洲欧美电影院| 欧美精品一区二区三区蜜桃| 欧美一区二区视频在线观看2020 | 色噜噜狠狠色综合欧洲selulu| 成人黄色av网站在线| 色哟哟在线观看一区二区三区| www.欧美日韩| 欧美一区二区三区啪啪| 精品国产凹凸成av人导航| 国产日本欧美一区二区| 亚洲天堂网中文字| 蜜芽一区二区三区| 国产成人精品免费一区二区| 成人免费精品视频| 日韩午夜三级在线| 国产三区在线成人av| 国产精品成人一区二区三区夜夜夜| 一区二区三区中文字幕在线观看| 免费不卡在线观看| 欧美日韩你懂的| 中文字幕精品三区| 日本不卡视频一二三区| 91网站在线播放| 国产日韩亚洲欧美综合| 亚洲观看高清完整版在线观看| 久久成人羞羞网站| 欧美一区二区三区免费在线看| 1区2区3区精品视频| 国产一区二区中文字幕| 日韩欧美不卡一区| 天天操天天干天天综合网| 成人免费毛片片v| 欧美精品丝袜中出| 亚洲人妖av一区二区| 亚洲成av人**亚洲成av**| 狠狠色综合播放一区二区| 欧美伊人久久久久久久久影院 | 欧美一区二区人人喊爽| 国产精品久久夜| 亚洲一级电影视频| av中文字幕一区| 国产日韩欧美激情| 国产精品一区二区91| 精品免费一区二区三区| 日本va欧美va瓶| 日韩三级av在线播放| 三级不卡在线观看| 欧美日韩黄视频| 亚洲18女电影在线观看| 欧美日韩小视频| 亚洲线精品一区二区三区八戒| 色综合天天综合色综合av| 国产精品乱码人人做人人爱| 国产精品99久久久久| 久久久噜噜噜久久中文字幕色伊伊| 日本欧洲一区二区| 欧美本精品男人aⅴ天堂| 国内精品不卡在线| 精品国产一区a| 美脚の诱脚舐め脚责91| 久久久777精品电影网影网 | 在线成人高清不卡| 久久99精品国产麻豆不卡| 欧美不卡123| 国产毛片精品视频| 亚洲男同1069视频| 欧美日韩精品一区二区在线播放| 六月丁香婷婷色狠狠久久| 国产精品网站在线观看| 色婷婷av一区二区三区之一色屋| 亚洲国产精品精华液网站| 欧美精品三级日韩久久| 一区二区三区在线视频观看58| 欧美一区二区三区免费观看视频| 国产精品69毛片高清亚洲| 欧美国产综合一区二区| 在线亚洲精品福利网址导航| 国产黑丝在线一区二区三区| 国产精品久久久久久久久免费桃花| 欧美日韩情趣电影| 国产精品91一区二区| 三级影片在线观看欧美日韩一区二区 | 日韩 欧美一区二区三区| 日韩毛片一二三区| 久久精品这里都是精品| 成人黄色在线看| 国产一区二区在线电影| 日韩福利电影在线观看| 亚洲一区二区影院| 日韩毛片在线免费观看| 国产婷婷色一区二区三区四区| 4438x亚洲最大成人网| 在线观看精品一区| 欧洲av一区二区嗯嗯嗯啊| 99久久国产免费看| 99精品欧美一区二区三区综合在线| 国产一区二区精品久久| 国产一区免费电影| 国产精品一二三在| 亚洲精品国产无套在线观| 久久精品男人天堂av| 国产精品久久久久影院老司| 国产欧美精品在线观看| 中文子幕无线码一区tr| 欧美激情在线一区二区| 国产精品家庭影院| 性感美女极品91精品| 国产成人精品三级| 欧美日韩精品免费观看视频| 在线一区二区三区做爰视频网站| 色94色欧美sute亚洲线路一久 | 6080国产精品一区二区| 精品久久久久久久久久久久久久久| www激情久久| 亚洲一区二区三区在线看| 日本午夜精品一区二区三区电影 | 国产资源精品在线观看| 97超碰欧美中文字幕| 精品污污网站免费看| 久久久久久久久久看片| 亚洲永久免费av| 成人18视频在线播放| 欧美一区二区日韩| 亚洲欧洲日韩在线| 日本欧美肥老太交大片| 欧美性大战xxxxx久久久| 国产欧美一区二区精品性色 | 成人美女视频在线观看18| 777精品伊人久久久久大香线蕉| 国产日韩精品一区二区三区 | 色婷婷一区二区三区四区| 欧美va天堂va视频va在线| 亚洲一区二区欧美日韩| 欧美日韩五月天| 美女网站色91| 51久久夜色精品国产麻豆| 日韩精品91亚洲二区在线观看| 在线观看亚洲一区| 最近日韩中文字幕| 在线观看免费成人| 中文字幕一区二区三| 成人激情动漫在线观看| 亚洲欧洲精品一区二区精品久久久| 国内精品国产三级国产a久久| 日韩免费福利电影在线观看| 日韩电影在线一区| 国产亚洲精品久| av成人动漫在线观看| 亚洲摸摸操操av| 在线成人高清不卡| 日韩精品一卡二卡三卡四卡无卡| 精品福利在线导航| 成人激情动漫在线观看| 亚洲小少妇裸体bbw| 2023国产精品| 欧美性淫爽ww久久久久无| 首页欧美精品中文字幕| 国产亚洲污的网站| 欧美三级在线视频| 国产一区 二区 三区一级| 亚洲黄色小说网站| 欧美成人aa大片| 国产精品影视网| 洋洋成人永久网站入口| 欧美mv和日韩mv的网站| 欧美精品1区2区3区| 成人性色生活片免费看爆迷你毛片| 久久亚洲免费视频| 国内成+人亚洲+欧美+综合在线| 国产精品美女久久久久av爽李琼| 日韩福利电影在线| 91香蕉国产在线观看软件| 久久99国产精品成人| 久久久久亚洲综合| 日本va欧美va精品| 一本色道**综合亚洲精品蜜桃冫| 精品第一国产综合精品aⅴ| 久久精品国产一区二区三区免费看 | 成人午夜激情影院| 肉丝袜脚交视频一区二区| 亚洲三级久久久| 国产欧美一区二区精品仙草咪| 色综合天天综合狠狠| 色综合色综合色综合色综合色综合 | 欧洲视频一区二区| 日韩电影一二三区| 玉足女爽爽91| 一区二区免费看| 午夜精品久久久| 午夜激情久久久| 精彩视频一区二区三区| 久草中文综合在线| 国内精品国产成人国产三级粉色| 国产在线播放一区三区四| 亚洲小说欧美激情另类| 香蕉乱码成人久久天堂爱免费| 亚洲成精国产精品女| 久久国产视频网| 色综合久久天天综合网|