www.pudn.com > NetPaw.rar > HttpReqHeader.cpp


#include "StdAfx.h" 
#include "httpsocket.h" 
#include ".\httpreqheader.h" 
 
 
//////////////// Implementation ////////////////////////////////////// 
CHttpReqHeader::CHttpReqHeader() 
{ 
	m_sRequest = _T(""); 
} 
 
CHttpReqHeader::~CHttpReqHeader() 
{ 
} 
 
void CHttpReqHeader::FormatRequestHeader(LPCTSTR szServerName, LPCTSTR szObject, LONGLONG nFrom, LONGLONG nTo, LPCTSTR szReferer, LPCTSTR szCookie) 
{ 
	m_sRequest = _T(""); 
	if( nFrom > nTo ) 
	{ 
		return; 
	} 
 
	///第1行:方法,请求的路径,版本 
	m_sRequest += _T("GET "); 
	m_sRequest += szObject; 
	m_sRequest += _T(" HTTP/1.1"); 
    m_sRequest += _T("\r\n"); 
 
	///第2行:主机 
    m_sRequest += _T("Host:"); 
	m_sRequest += szServerName; 
    m_sRequest += _T("\r\n"); 
 
	///第3行: 
	if(szReferer != NULL) 
	{ 
		m_sRequest += _T("Referer:"); 
		m_sRequest += szReferer; 
		m_sRequest += _T("\r\n");		 
	} 
 
	///第4行:接收的数据类型 
    m_sRequest += _T("Accept:*/*"); 
    m_sRequest += _T("\r\n"); 
 
	///第5行:浏览器类型 
    m_sRequest += _T("User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)"); 
    m_sRequest += _T("\r\n"); 
 
	///第6行:连接设置,保持 
	m_sRequest += _T("Connection:Keep-Alive"); 
	m_sRequest += _T("\r\n"); 
 
	///第7行:Cookie. 
	if(szCookie != NULL) 
	{ 
		m_sRequest += _T("Set Cookie:0"); 
		m_sRequest += szCookie; 
		m_sRequest += _T("\r\n"); 
	} 
 
	CString sTemp; 
	///第8行:请求的数据起始字节位置(断点续传的关键) 
	if(nTo > 0) 
	{ 
		m_sRequest += _T("Range: bytes="); 
		sTemp.Format("%I64d", nFrom); 
		m_sRequest += sTemp; 
		m_sRequest += _T("-"); 
		if(nTo > nFrom) 
		{ 
			sTemp.Format("%I64d", nTo); 
			m_sRequest += sTemp; 
		} 
 
		m_sRequest += _T("\r\n"); 
	} 
 
	///最后一行:空行 
	m_sRequest += _T("\r\n"); 
} 
 
long CHttpReqHeader::GetHeaderSize(void) 
{ 
	return m_sRequest.GetLength(); 
} 
 
void CHttpReqHeader::GetData(LPTSTR szData) 
{ 
	StrCopy( szData, (LPCTSTR)m_sRequest, MAX_BUFF_SIZE ); 
}