#include <afxwin.h>
#include <stdio.h>
#include <windows.h>
#include "Wininet.h"
#pragma comment(lib,"Wininet.lib")
//模拟浏览器发送HTTP请求函数
CString HttpRequest(char * lpHostName,short sPort,char * lpUrl,char * lpMethod,char * lpPostData,int nPostDataLen)
{
HINTERNET hInternet,hConnect,hRequest;
BOOL bRet;CString strResponse;
hInternet = InternetOpen("User-Agent",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(!hInternet)
goto Ret0;
hConnect = InternetConnect(hInternet,lpHostName,sPort,NULL,"HTTP/1.1",INTERNET_SERVICE_HTTP,0,0);
if(!hConnect)
goto Ret0;
hRequest = HttpOpenRequest(hConnect,lpMethod,lpUrl,"HTTP/1.1",NULL,NULL,INTERNET_FLAG_RELOAD,0);
if(!hRequest)
goto Ret0;
//bRet = HttpAddRequestHeaders(hRequest,"Content-Type: application/x-www-form-urlencoded",Len(FORMHEADERS),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
//if(!bRet)
//goto Ret0;
bRet = HttpSendRequest(hRequest,NULL,0,lpPostData,nPostDataLen);
while(TRUE)
{
char cReadBuffer[4096];
unsigned long lNumberOfBytesRead;
bRet = InternetReadFile(hRequest,cReadBuffer,sizeof(cReadBuffer) - 1,&lNumberOfBytesRead);
if(!bRet || !lNumberOfBytesRead)
break;
cReadBuffer[lNumberOfBytesRead] = 0;
strResponse = strResponse + cReadBuffer;
}
Ret0:
if(hRequest)
InternetCloseHandle(hRequest);
if(hConnect)
InternetCloseHandle(hConnect);
if(hInternet)
InternetCloseHandle(hInternet);
return strResponse;
}
void main()
{
//CString strResponse = HttpRequest("translate.google.com",80,"/translate_t?langpair=en|zh-CN","POST","hl=zh-CN&ie=UTF-8&text=this is me&langpair=en|zh-CN",strlen("hl=zh-CN&ie=UTF-8&text=this is me&langpair=en|zh-CN"));
CString strResponse = HttpRequest("www.hao123.com",80,NULL,"GET",NULL,0);
FILE * fp = fopen("C:/123.htm","wb");
fwrite(strResponse,strResponse.GetLength(),1,fp);
fclose(fp);
::MessageBox(NULL,strResponse,"123",0);
}
#include <stdio.h>
#include <windows.h>
#include "Wininet.h"
#pragma comment(lib,"Wininet.lib")
//模拟浏览器发送HTTP请求函数
CString HttpRequest(char * lpHostName,short sPort,char * lpUrl,char * lpMethod,char * lpPostData,int nPostDataLen)
{
HINTERNET hInternet,hConnect,hRequest;
BOOL bRet;CString strResponse;
hInternet = InternetOpen("User-Agent",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(!hInternet)
goto Ret0;
hConnect = InternetConnect(hInternet,lpHostName,sPort,NULL,"HTTP/1.1",INTERNET_SERVICE_HTTP,0,0);
if(!hConnect)
goto Ret0;
hRequest = HttpOpenRequest(hConnect,lpMethod,lpUrl,"HTTP/1.1",NULL,NULL,INTERNET_FLAG_RELOAD,0);
if(!hRequest)
goto Ret0;
//bRet = HttpAddRequestHeaders(hRequest,"Content-Type: application/x-www-form-urlencoded",Len(FORMHEADERS),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
//if(!bRet)
//goto Ret0;
bRet = HttpSendRequest(hRequest,NULL,0,lpPostData,nPostDataLen);
while(TRUE)
{
char cReadBuffer[4096];
unsigned long lNumberOfBytesRead;
bRet = InternetReadFile(hRequest,cReadBuffer,sizeof(cReadBuffer) - 1,&lNumberOfBytesRead);
if(!bRet || !lNumberOfBytesRead)
break;
cReadBuffer[lNumberOfBytesRead] = 0;
strResponse = strResponse + cReadBuffer;
}
Ret0:
if(hRequest)
InternetCloseHandle(hRequest);
if(hConnect)
InternetCloseHandle(hConnect);
if(hInternet)
InternetCloseHandle(hInternet);
return strResponse;
}
void main()
{
//CString strResponse = HttpRequest("translate.google.com",80,"/translate_t?langpair=en|zh-CN","POST","hl=zh-CN&ie=UTF-8&text=this is me&langpair=en|zh-CN",strlen("hl=zh-CN&ie=UTF-8&text=this is me&langpair=en|zh-CN"));
CString strResponse = HttpRequest("www.hao123.com",80,NULL,"GET",NULL,0);
FILE * fp = fopen("C:/123.htm","wb");
fwrite(strResponse,strResponse.GetLength(),1,fp);
fclose(fp);
::MessageBox(NULL,strResponse,"123",0);
}
Option Explicit
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInternetHandle As Long) As Boolean
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal lpszServerName As String, ByVal nProxyPort As Integer, ByVal lpszUsername As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hInternetSession As Long, ByVal lpszVerb As String, ByVal lpszObjectName As String, ByVal lpszVersion As String, ByVal lpszReferer As String, ByVal lpszAcceptTypes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function HttpAddRequestHeaders Lib "wininet.dll" Alias "HttpAddRequestHeadersA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lModifiers As Long) As Integer
Public Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As String, ByVal lOptionalLength As Long) As Boolean
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_DEFAULT_HTTP_PORT = 80
Public Const INTERNET_SERVICE_HTTP = 3
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000
Public Const HTTP_ADDREQ_FLAG_ADD = &H20000000
'模拟浏览器发送HTTP请求协议函数
Function HttpRequest(strHostName As String, intPort As Integer, strUrl As String, strMethod As String, strPostData As String, ByVal lngPostDataLen As Long) As String
Dim hInternet As Long, hConnect As Long, hRequest As Long
Dim strBuffer As String, lngNumberOfBytesRead As Long, strResponse As String
Dim blnRet As Boolean
HttpRequest = "" '初始化函数返回值
'打开一个Session会话
hInternet = InternetOpen("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
If hInternet = 0 Then
MsgBox "hInternetOpen函数调用失败!"
GoTo Ret0
End If
'连接服务器
hConnect = InternetConnect(hInternet, strHostName, intPort, vbNullString, "HTTP/1.1", INTERNET_SERVICE_HTTP, 0, 0)
If hConnect = 0 Then
MsgBox "InternetConnect函数调用失败!"
GoTo Ret0
End If
'创建一个请求
hRequest = HttpOpenRequest(hConnect, strMethod, strUrl, "HTTP/1.1", vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
If hRequest = 0 Then
MsgBox "HttpOpenRequest函数调用失败!"
GoTo Ret0
End If
blnRet = HttpSendRequest(hRequest, vbNullString, 0, strPostData, lngPostDataLen)
If blnRet = False Then
MsgBox "HttpSendRequest函数调用失败!"
GoTo Ret0
End If
Do While True
strBuffer = String(4096, 0)
blnRet = InternetReadFile(hRequest, strBuffer, Len(strBuffer), lngNumberOfBytesRead)
strResponse = strResponse & Left(strBuffer, lngNumberOfBytesRead)
If blnRet = False Or Not CBool(lngNumberOfBytesRead) Then Exit Do
Loop
Ret0:
If hRequest Then Call InternetCloseHandle(hRequest)
If hConnect Then Call InternetCloseHandle(hConnect)
If hInternet Then Call InternetCloseHandle(hInternet)
HttpRequest = strResponse
End Function
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInternetHandle As Long) As Boolean
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal lpszServerName As String, ByVal nProxyPort As Integer, ByVal lpszUsername As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hInternetSession As Long, ByVal lpszVerb As String, ByVal lpszObjectName As String, ByVal lpszVersion As String, ByVal lpszReferer As String, ByVal lpszAcceptTypes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function HttpAddRequestHeaders Lib "wininet.dll" Alias "HttpAddRequestHeadersA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lModifiers As Long) As Integer
Public Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As String, ByVal lOptionalLength As Long) As Boolean
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_DEFAULT_HTTP_PORT = 80
Public Const INTERNET_SERVICE_HTTP = 3
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000
Public Const HTTP_ADDREQ_FLAG_ADD = &H20000000
'模拟浏览器发送HTTP请求协议函数
Function HttpRequest(strHostName As String, intPort As Integer, strUrl As String, strMethod As String, strPostData As String, ByVal lngPostDataLen As Long) As String
Dim hInternet As Long, hConnect As Long, hRequest As Long
Dim strBuffer As String, lngNumberOfBytesRead As Long, strResponse As String
Dim blnRet As Boolean
HttpRequest = "" '初始化函数返回值
'打开一个Session会话
hInternet = InternetOpen("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
If hInternet = 0 Then
MsgBox "hInternetOpen函数调用失败!"
GoTo Ret0
End If
'连接服务器
hConnect = InternetConnect(hInternet, strHostName, intPort, vbNullString, "HTTP/1.1", INTERNET_SERVICE_HTTP, 0, 0)
If hConnect = 0 Then
MsgBox "InternetConnect函数调用失败!"
GoTo Ret0
End If
'创建一个请求
hRequest = HttpOpenRequest(hConnect, strMethod, strUrl, "HTTP/1.1", vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
If hRequest = 0 Then
MsgBox "HttpOpenRequest函数调用失败!"
GoTo Ret0
End If
blnRet = HttpSendRequest(hRequest, vbNullString, 0, strPostData, lngPostDataLen)
If blnRet = False Then
MsgBox "HttpSendRequest函数调用失败!"
GoTo Ret0
End If
Do While True
strBuffer = String(4096, 0)
blnRet = InternetReadFile(hRequest, strBuffer, Len(strBuffer), lngNumberOfBytesRead)
strResponse = strResponse & Left(strBuffer, lngNumberOfBytesRead)
If blnRet = False Or Not CBool(lngNumberOfBytesRead) Then Exit Do
Loop
Ret0:
If hRequest Then Call InternetCloseHandle(hRequest)
If hConnect Then Call InternetCloseHandle(hConnect)
If hInternet Then Call InternetCloseHandle(hInternet)
HttpRequest = strResponse
End Function