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方法(附源码)相关推荐

  1. android+仿iphone,Android编程实现仿iphone抖动效果的方法(附源码)

    Android编程实现仿iphone抖动效果的方法(附源码) 时间:2021-05-20 本文实例讲述了Android编程实现仿iphone抖动效果的方法.分享给大家供大家参考,具体如下: 布局文件: ...

  2. thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)

    前言 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到 ...

  3. 使用SDK快速接入各大平台快游戏 微信小游戏 QQ小游戏使用方法-附源码下载地址

    使用SDK快速接入各平台快游戏 微信小游戏 QQ小游戏 使用方法 引入SDK文件 // 该方式引入可以直接使用qgsdk<script src="qg-sdk.min.1.0.4.js ...

  4. 读hzk32_点阵字库HZK12 HZK16 HZK24 ASC12 ASC16 简介 及 使用方法[附源码]

    如何在嵌入式系统中使用大量的汉字和字符呢? DOS前辈们经过艰辛的努力,将制作好的字模放到了一个个标准的库中以免去后辈的麻烦,这就是点阵字库文件. 一般我们使用16*16的点阵宋体字库,所谓16*16 ...

  5. android+usb模拟点击,Android后台模拟点击探索(附源码)

    工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...

  6. 点阵字库HZK12 HZK16 HZK24 ASC12 ASC16 简介 及 使用方法[附源码]

    字库点阵格式定义 ASC12  ' 8x12 ASCII点阵 一个字符12Byte ASC16  ' 8x16 ASCII点阵 一个字符16Byte ASC48  '24x48 ASCII点阵 一个字 ...

  7. 基于Matlab创建跟踪场景、模拟目标运动和模拟雷达检测仿真(附源码)

    目录 一.模拟移动对象及其属性 1.1 创建具有移动目标的跟踪方案 1.2 可视化并运行跟踪方案 二.使用雷达传感器生成检测 2.1 对雷达传感器进行建模并模拟其检测 2.2 创建塔和雷达 2.3 为 ...

  8. android 模拟点击某点,Android后台模拟点击探索(附源码)

    工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...

  9. Java面向对象之构造方法模拟捕鱼达人游戏【附源码】

    1.创建捕手类 public class Test02_Capture{//定义类的属性变量String name; //名字int food; //饵料数量int food_out; //捕手丢出的 ...

  10. VB6.0 读取Excel2010简单方法(附源码和注释,可伸手)

    添加一个按钮和CommonDialog控件 如下图 工程引用如下图 源代码: Private Sub Command1_Click()Dim sourceFilePath As StringMe.Co ...

最新文章

  1. 江湖永在:金庸先生和阿里人的那些记忆
  2. ios开发学习--cocos2d(cocos2d)效果源码分享--系列教程
  3. python程序多次运行_如何让编程语言 Python 自己重复运行进程?
  4. KMP算法 java版本
  5. HANA kernel dump
  6. 【ElasticSearch】es Elasticsearch压测实战 II esrally 进阶实战 笔记
  7. 【递归】n个数的全排列
  8. 成功网络管理员必备“软件”素质
  9. PE格式详细讲解5 - 系统篇05|解密系列
  10. android TTS语音播报
  11. 循环冗余校验码中冗余码的计算
  12. python解析XML
  13. 基于opencv的实现简单的人脸识别功能
  14. 计算机组成原理指令存储器,《计算机组成原理》实验报告——指令存储、数据存储器...
  15. 被蠢人、穷人与聪明人放弃的“概率权”
  16. Nexus搭建Maven私服全攻略一:认识Nexus与索引
  17. Java 执行 JS 脚本工具
  18. [Redux/Mobx] redux的数据存储和本地储存有什么区别?
  19. 详解生物地理学优化(BBO)算法(一)
  20. 【Matlab】简单的滑模控制程序及Simulink仿真

热门文章

  1. python成绩查询系统_教你用python爬虫监控教务系统,查成绩快人一步!
  2. 如何用matlab求函数的最值?
  3. CodeBlocks如何将英文环境改为中文
  4. [数据集][VOC]高质量的目标检测数据集合集(持续更新)
  5. android 中关于两张图片叠加方法(记录)
  6. dllhell 听说过吗?_您已经听说过X25519,但是X448有何特别之处?
  7. 【python+requests】爬取“国家级非物质文化遗产代表性项目名录”
  8. HTML5期末大作业:音乐网站设计——html5在线音乐新闻发布会网站模板(滚动页) HTML+CSS+JavaScript
  9. 70行代码实现同花顺,通达信,麦语言大部分技术指标公式
  10. Matlab中的元胞数组(cell)