⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httprequestx.cpp

📁 HTTP 搜索代码
💻 CPP
字号:
#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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -