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 );
}