资源简介
通过HTTP协议上传文本和二进制数据、支持POST方式、支持GET方式;
代码片段和文件信息
// SmuConnection.cpp: implementation of the CHttpPost class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include
#include
#include
#include
#include
#include “CritSec.h“
#include “HttpConnection.h“
//#include “afxinet.h“
#pragma comment(lib “WinInet.lib“)
#pragma comment(lib “ws2_32.lib“)
#define MAX_RECV_SIZE 1024*1024*2
#define RECVBUFSIZE 1024*1024*2
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHttpPost::CHttpPost()
{
m_hSmuSession = NULL;
m_hSmuConn = NULL;
m_bStarted = false;
}
CHttpPost::~CHttpPost()
{
if (m_bStarted)
{
StopHttp();
}
}
bool CHttpPost::ConnectHttp(char * strIp int Port char * strUsername char * strPassword)
{
//参数验证
if (!strIp || Port==0 )
{
return false;
}
//连接HTTP中心
CAutoLock lock( &m_sCs );
if (m_hSmuSession == NULL || m_hSmuSession == INVALID_HANDLE_VALUE)
{
m_hSmuSession = InternetOpen(NULL INTERNET_OPEN_TYPE_PRECONFIG NULL NULL INTERNET_FLAG_EXISTING_CONNECT);
if (m_hSmuSession == NULL)
{
m_bStarted = false;
return false;
}
else if (m_hSmuSession == INVALID_HANDLE_VALUE)
{
m_hSmuSession = NULL;
m_bStarted = false;
return false;
}
}
// 设置session选项
DWORD dwRetries = 5 dwConnTimeOut = 1000 dwTimeOut=3000;
InternetSetOption( m_hSmuSession INTERNET_OPTION_CONNECT_RETRIES (LPVOID)&dwRetries sizeof(DWORD) );
InternetSetOption( m_hSmuSession INTERNET_OPTION_CONNECT_TIMEOUT (LPVOID)&dwConnTimeOut sizeof(DWORD) ) ;
InternetSetOption( m_hSmuSession INTERNET_OPTION_DISCONNECTED_TIMEOUT (LPVOID)&dwTimeOut sizeof(DWORD));
InternetSetOption( m_hSmuSession INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT (LPVOID)&dwTimeOut sizeof(DWORD));
InternetSetOption( m_hSmuSession INTERNET_OPTION_CONTROL_SEND_TIMEOUT (LPVOID)&dwTimeOut sizeof(DWORD));
InternetSetOption( m_hSmuSession INTERNET_OPTION_DATA_SEND_TIMEOUT (LPVOID)&dwTimeOut sizeof(DWORD));
InternetSetOption( m_hSmuSession INTERNET_OPTION_DATA_RECEIVE_TIMEOUT (LPVOID)&dwTimeOut sizeof(DWORD));
if (m_hSmuConn == NULL || m_hSmuConn == INVALID_HANDLE_VALUE)
{
m_hSmuConn = InternetConnect(m_hSmuSession
strIp
Port
strUsername
strPassword
INTERNET_SERVICE_HTTP INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_KEEP_CONNECTION
1);
if (m_hSmuConn == NULL || m_hSmuConn == INVALID_HANDLE_VALUE)
{
InternetCloseHandle(m_hSmuSession);
m_hSmuSession = NULL;
m_hSmuConn = NULL;
m_bStarted = false;
return false;
}
}
m_bStarted = true;
return true;
}
bool CHttpPost::PostText(char* pMsgchar* address)
{
CAutoLock lock( &m_sCs );
TCHAR szRequestHeader[512] = { 0 };
//TCHAR szPreFileData[
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 23391 2017-11-29 09:34 HttpConnection.cpp
文件 2045 2017-11-29 09:34 HttpConnection.h
----------- --------- ---------- ----- ----
25436 2
评论
共有 条评论