模拟HTTP请求, POST方法(附源码)
Fiddler是一款免费的Http抓包工具,功能强大,可与商业软件媲美。下载地址:
http://www.fiddlertool.com/fiddler/version.asp
#include <afxwin.h>
#include <stdio.h>
#include <windows.h>
#include "Wininet.h"
#include <WinSock2.h>
#pragma comment(lib,"Wininet.lib")
#pragma comment(lib,"nafxcwd.lib")
#pragma comment(lib, "ws2_32.lib")
//模拟浏览器发送HTTP请求函数
CString HttpRequest(TCHAR * lpHostName,short sPort,TCHAR * lpUrl,TCHAR * lpMethod,TCHAR * lpPostData,int nPostDataLen)
{
HINTERNET hInternet,hConnect,hRequest;
BOOL bRet;
CString strResponse;
FILE * fp ;
static TCHAR *accept = _T("Accept: */*");
TCHAR hdrs[] = L"Content-Type: application/x-www-form-urlencoded"
L"Accept-Language: zh-cn"
L"Accept-Encoding: gzip, deflate"
L"Pragma: no-cache";
hInternet = InternetOpen(L"User-Agent",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if(!hInternet)
goto Ret0;
hConnect = InternetConnect(hInternet,lpHostName, INTERNET_DEFAULT_HTTP_PORT,NULL, NULL, INTERNET_SERVICE_HTTP,0,1);
if(!hConnect)
goto Ret0;
hRequest = HttpOpenRequest(hConnect, lpMethod, lpUrl, L"HTTP/1.1", NULL, NULL, INTERNET_FLAG_RELOAD, 1);
DWORD erro = GetLastError();
if(!hRequest)
goto Ret0;
bRet = HttpSendRequest(hRequest,hdrs, wcslen(hdrs), "key=love&go=go&y=1",strlen("key=love&go=go&y=1"));
fp = fopen("C://a.html","w");
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;
fwrite(cReadBuffer,lNumberOfBytesRead,1,fp);
}
fclose(fp);
Ret0:
if(hRequest)
InternetCloseHandle(hRequest);
if(hConnect)
InternetCloseHandle(hConnect);
if(hInternet)
InternetCloseHandle(hInternet);
return strResponse;
}
void main(int argc, char *argv[])
{
CString strResponse = HttpRequest(L"lrc.bzmtv.com",80,L"/So.asp", L"POST", L"key=love&go=go&y=1",wcslen(L"key=love&go=go&y=1"));
}
自己慢慢看吧,GET方法更简单,在此不表。
还有一个socket api版本,代码如下:
#include <stdio.h>
#include "winsock.h"
#pragma comment(lib,"ws2_32.lib")
#define winsock_version 0x0101
void main()
{
//I create C:/Inetpub/wwwroot/test/test.asp ,start the web service
//start my program, the result is OK.
//If it works,it is written by masterz,otherwise I don't know who write it.
SOCKADDR_IN saServer;
LPHOSTENT lphostent;
WSADATA wsadata;
SOCKET hsocket;
int nRet;
const char* host_name="lrc.bzmtv.com";
char* req="POST /So.asp HTTP/1.1/r/n"
//"From: local/r/n"
"Accept: */* /r/n"
"Content-Type: application/x-www-form-urlencoded/r/n"
"Accept-Language: zh-cn/r/n"
"Accept-Encoding: gzip, deflate/r/n"
"User-Agent: post_test/1.1/r/n"
"Content-Length: 18/r/n"
"Host: lrc.bzmtv.com/r/n"
"Pragma: no-cache/r/n/r/n"
"key=love&go=go&y=1/r/n";
if(WSAStartup(winsock_version,&wsadata))
printf("can't initial socket");
lphostent=gethostbyname(host_name);
if(lphostent==NULL)
printf("lphostent is null");
hsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
saServer.sin_family = AF_INET;
// Use def. now, need to handle general case
saServer.sin_port = htons(80);
saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list);
nRet = connect(hsocket, (LPSOCKADDR)&saServer, sizeof(SOCKADDR_IN));
if (nRet == SOCKET_ERROR)
{
printf("can't connect");
closesocket(hsocket);
return;
}
else
printf("connected with %s/n",host_name);
nRet = send(hsocket, req, strlen(req), 0);
if (nRet == SOCKET_ERROR)
{
printf("send() failed");
closesocket(hsocket);
}
else
printf("send() OK/n");
char dest[1000];
nRet=1;
FILE *fp;
fp = fopen("C://a.html", "w");
while(nRet>0)
{
nRet=recv(hsocket,(LPSTR)dest,sizeof(dest),0);
if(nRet>0)
dest[nRet]=0;
else
dest[0]=0;
fwrite(dest, nRet, 1, fp);
printf("/nReceived bytes:%d/n",nRet);
printf("Result:/n%s",dest);
}
fclose(fp);
}
模拟HTTP请求, POST方法(附源码)相关推荐
- android+仿iphone,Android编程实现仿iphone抖动效果的方法(附源码)
Android编程实现仿iphone抖动效果的方法(附源码) 时间:2021-05-20 本文实例讲述了Android编程实现仿iphone抖动效果的方法.分享给大家供大家参考,具体如下: 布局文件: ...
- thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)
前言 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到 ...
- 使用SDK快速接入各大平台快游戏 微信小游戏 QQ小游戏使用方法-附源码下载地址
使用SDK快速接入各平台快游戏 微信小游戏 QQ小游戏 使用方法 引入SDK文件 // 该方式引入可以直接使用qgsdk<script src="qg-sdk.min.1.0.4.js ...
- 读hzk32_点阵字库HZK12 HZK16 HZK24 ASC12 ASC16 简介 及 使用方法[附源码]
如何在嵌入式系统中使用大量的汉字和字符呢? DOS前辈们经过艰辛的努力,将制作好的字模放到了一个个标准的库中以免去后辈的麻烦,这就是点阵字库文件. 一般我们使用16*16的点阵宋体字库,所谓16*16 ...
- android+usb模拟点击,Android后台模拟点击探索(附源码)
工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...
- 点阵字库HZK12 HZK16 HZK24 ASC12 ASC16 简介 及 使用方法[附源码]
字库点阵格式定义 ASC12 ' 8x12 ASCII点阵 一个字符12Byte ASC16 ' 8x16 ASCII点阵 一个字符16Byte ASC48 '24x48 ASCII点阵 一个字 ...
- 基于Matlab创建跟踪场景、模拟目标运动和模拟雷达检测仿真(附源码)
目录 一.模拟移动对象及其属性 1.1 创建具有移动目标的跟踪方案 1.2 可视化并运行跟踪方案 二.使用雷达传感器生成检测 2.1 对雷达传感器进行建模并模拟其检测 2.2 创建塔和雷达 2.3 为 ...
- android 模拟点击某点,Android后台模拟点击探索(附源码)
工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...
- Java面向对象之构造方法模拟捕鱼达人游戏【附源码】
1.创建捕手类 public class Test02_Capture{//定义类的属性变量String name; //名字int food; //饵料数量int food_out; //捕手丢出的 ...
- VB6.0 读取Excel2010简单方法(附源码和注释,可伸手)
添加一个按钮和CommonDialog控件 如下图 工程引用如下图 源代码: Private Sub Command1_Click()Dim sourceFilePath As StringMe.Co ...
最新文章
- 江湖永在:金庸先生和阿里人的那些记忆
- ios开发学习--cocos2d(cocos2d)效果源码分享--系列教程
- python程序多次运行_如何让编程语言 Python 自己重复运行进程?
- KMP算法 java版本
- HANA kernel dump
- 【ElasticSearch】es Elasticsearch压测实战 II esrally 进阶实战 笔记
- 【递归】n个数的全排列
- 成功网络管理员必备“软件”素质
- PE格式详细讲解5 - 系统篇05|解密系列
- android TTS语音播报
- 循环冗余校验码中冗余码的计算
- python解析XML
- 基于opencv的实现简单的人脸识别功能
- 计算机组成原理指令存储器,《计算机组成原理》实验报告——指令存储、数据存储器...
- 被蠢人、穷人与聪明人放弃的“概率权”
- Nexus搭建Maven私服全攻略一:认识Nexus与索引
- Java 执行 JS 脚本工具
- [Redux/Mobx] redux的数据存储和本地储存有什么区别?
- 详解生物地理学优化(BBO)算法(一)
- 【Matlab】简单的滑模控制程序及Simulink仿真
热门文章
- python成绩查询系统_教你用python爬虫监控教务系统,查成绩快人一步!
- 如何用matlab求函数的最值?
- CodeBlocks如何将英文环境改为中文
- [数据集][VOC]高质量的目标检测数据集合集(持续更新)
- android 中关于两张图片叠加方法(记录)
- dllhell 听说过吗?_您已经听说过X25519,但是X448有何特别之处?
- 【python+requests】爬取“国家级非物质文化遗产代表性项目名录”
- HTML5期末大作业:音乐网站设计——html5在线音乐新闻发布会网站模板(滚动页) HTML+CSS+JavaScript
- 70行代码实现同花顺,通达信,麦语言大部分技术指标公式
- Matlab中的元胞数组(cell)