?? httprequestx.cpp
字號(hào):
#include "StdAfx.h"
#include ".\httprequestx.h"
CHttpRequestX::CHttpRequestX(void)
{
WSADATA wd;
WSAStartup( 0x202, &wd );
m_sContent = "";
}
CHttpRequestX::~CHttpRequestX(void)
{
WSACleanup();
m_sContent = "";
}
//"GET %s HTTP/1.1\r\n"
const char * HTTPREQUEST1 =
"Accept: */*\r\n"
"Accept-Language: zh-cn\r\n"
"Accept-Encoding: deflate\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler ; .NET CLR 1.1.4322)\r\n";
const char * HTTPREQUEST2 = "Connection: Keep-Alive\r\n\r\n";
BOOL CHttpRequestX::PostRequest( const char * pszAddress, const char * pszParam )
{
char szAddress[1024];
strcpy( szAddress, pszAddress );
char * p = strchr( szAddress, ':' );
UINT nPort = 80;
if( p )
{
*p++=0;
nPort = (UINT)atoi( p );
}
SOCKET m_sHttp = INVALID_SOCKET;
SOCKADDR_IN stSockAddr;
ZeroMemory(&stSockAddr,sizeof(stSockAddr));
stSockAddr.sin_addr.s_addr = inet_addr( szAddress );
stSockAddr.sin_family = AF_INET;
stSockAddr.sin_port = htons( nPort );
if( stSockAddr.sin_addr.s_addr == 0 || stSockAddr.sin_addr.s_addr == -1 )
{
LPHOSTENT pHost = gethostbyname(szAddress);
if( pHost == NULL )
{
return FALSE;
}
stSockAddr.sin_addr.s_addr = *(ULONG *)pHost->h_addr_list[0];
}
m_sHttp = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if( m_sHttp == INVALID_SOCKET )
{
return FALSE;
}
//BOOL b = TRUE;
//setsockopt(m_sHttp,IPPROTO_TCP,TCP_NODELAY,(const char *)(&b),sizeof(b));
if(connect( m_sHttp, (SOCKADDR*)&stSockAddr, sizeof( stSockAddr ) ) == SOCKET_ERROR)
{
return FALSE;
}
///search?q=shijie&hl=zh-CN&lr=&newwindow=2&start=10&items=100&sa=N
std::string sHttpRequest = "GET ";
sHttpRequest += pszParam;
sHttpRequest += " HTTP/1.1\r\n";
sHttpRequest += HTTPREQUEST1;
sHttpRequest += "Host: ";
sHttpRequest += pszAddress;
sHttpRequest += "\r\n";
sHttpRequest += HTTPREQUEST2;
int iSize = send( m_sHttp, sHttpRequest.c_str(), sHttpRequest.size(), 0 );
// prepare HTTP requst
if( iSize == SOCKET_ERROR )
{
closesocket( m_sHttp );
return FALSE;
}
char buff[4096+4];
m_sContent = "";
while( 1 )
{
iSize = recv( m_sHttp, buff, 4096, 0 );
if( iSize == 0 ||
iSize == SOCKET_ERROR )
{
break;
}
buff[iSize] = 0;
m_sContent += buff;
//int size = m_sContent.size();
if( strncmp( buff+iSize-5, "0\r\n\r\n", 5 ) == 0 )
break;
}
closesocket( m_sHttp );
m_sHttp = INVALID_SOCKET;
return TRUE;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -