转自:http://hi.baidu.com/benbearlove/item/1671c23017575825b3c0c53f

环境:xp sp3,vs2008,在静态库中使用 MFC

    1. #include <afxwin.h>
    2. #include <stdio.h>
    3. #include <windows.h>
    4. #include <string>
    5. #include "Wininet.h"
    6. #pragma comment(lib,"Wininet.lib")
    7. //模拟浏览器发送HTTP请求函数
    8. std::string HttpRequest(char * lpHostName,short sPort,char * lpUrl,char * lpMethod,char * lpPostData,int nPostDataLen)
    9. {
    10. HINTERNET hInternet,hConnect,hRequest;
    11. BOOL bRet;
    12. std::string strResponse;
    13. hInternet = (HINSTANCE)InternetOpen("User-Agent",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
    14. if(!hInternet)
    15. goto Ret0;
    16. hConnect = (HINSTANCE)InternetConnect(hInternet,lpHostName,sPort,NULL,"HTTP/1.1",INTERNET_SERVICE_HTTP,0,0);
    17. if(!hConnect)
    18. goto Ret0;
    19. hRequest = (HINSTANCE)HttpOpenRequest(hConnect,lpMethod,lpUrl,"HTTP/1.1",NULL,NULL,INTERNET_FLAG_RELOAD,0);
    20. if(!hRequest)
    21. goto Ret0;
    22. //bRet = HttpAddRequestHeaders(hRequest,"Content-Type: application/x-www-form-urlencoded",Len(FORMHEADERS),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
    23. //if(!bRet)
    24. //goto Ret0;
    25. bRet = HttpSendRequest(hRequest,NULL,0,lpPostData,nPostDataLen);
    26. while(TRUE)
    27. {
    28. char cReadBuffer[4096];
    29. unsigned long lNumberOfBytesRead;
    30. bRet = InternetReadFile(hRequest,cReadBuffer,sizeof(cReadBuffer) - 1,&lNumberOfBytesRead);
    31. if(!bRet || !lNumberOfBytesRead)
    32. break;
    33. cReadBuffer[lNumberOfBytesRead] = 0;
    34. strResponse = strResponse + cReadBuffer;
    35. }
    36. Ret0:
    37. if(hRequest)
    38. InternetCloseHandle(hRequest);
    39. if(hConnect)
    40. InternetCloseHandle(hConnect);
    41. if(hInternet)
    42. InternetCloseHandle(hInternet);
    43. return strResponse;
    44. }
    45. void main()
    46. {
    47. //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"));
    48. std::string strResponse = HttpRequest("www.hao123.com",80,NULL,"GET",NULL,0);
    49. FILE * fp = fopen("C:\\123.htm","wb");
    50. fwrite(strResponse.c_str(),strResponse.length(),1,fp);
    51. fclose(fp);
    52. }

C++发送HTTP请求---亲测可行(转)的更多相关文章

  1. 亲测可行,AndroidStudio 究竟如何配置gradle

    一.你不想看到的 Gradle Build Running 话说在天朝当程序员也是很不容易的,不管是查阅资料还是下载东西,很多时候你会发现自己上网姿势不对,当然对大多数程序员来说,这都不是事儿.这次重 ...

  2. MyEclipse 2017 ci6 安装反编译插件(本人自己摸索的方法,亲测可行)

    注: 本文来源于:Smile_Miracle 的< MyEclipse 2017 ci6 安装反编译插件(本人自己摸索的方法,亲测可行) > 第一步:关闭ME,去一下地址下载jad的反编译 ...

  3. vegas pro 15解决导入的视频和音频有噪声问题,亲测可行

    中文步骤: 按住Shift->点击选项->首选项,松开Shift 点击右上角"内部"选项卡,在最下面的搜索栏输入SO4 找到第二项Enable So4 Compound ...

  4. pycharm 配置autopep8(亲测可行)

    autopep8是一个可以将Python代码自动排版为PEP8风格第三方包,使用它可以轻松地排版出格式优美整齐的代码.网络上有很多介绍如何在pycharm中配置autopep8的方案,但很多方案中还是 ...

  5. flask-mail发送QQ邮件代码示例(亲测可行)

    from flask import Flask from flask_mail import Mail, Message app = Flask(__name__) app.config.update ...

  6. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  7. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

  8. 通过Xshell如何从Linux服务器下载文件(亲测可行)

    到网上下载lrzsz安装包,这里以lrzsz-0.12.20.tar.gz为例 2 打开终端 cd 到安装包所在目录 tar zxvf lrzsz-0.12.20.tar.gz 解压安装包 3 进入解 ...

  9. MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)

    本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv ...

随机推荐

  1. AngularJS 入门教程

    1. 简介:AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是 ...

  2. python unittest 快速入门

    import unittest def add(x, y): return x + y class TestLearning(unittest.TestCase): def setUp(self): ...

  3. GenericAPIView类与几个扩展类的综合使用

    五个扩展类 扩展类 作用 封装的方法 状态码(成功,失败) ListModelMixin 查询多条数据 list 200 CreateModelMixin 新增一条数据 create 201,400 ...

  4. 几种常用排序算法的python实现

    1:快速排序 思想: 任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序. 一趟快速排序的算法是: 1)设置 ...

  5. MyBatis3-实现多表关联数据的查询

    前提: 1.新建Article表和增加模拟数据,脚本如下: Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` ) NOT NU ...

  6. delphi.memory.分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同,内存分配函数

    来自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool&utm_medium=referral ---------- ...

  7. C#汉字转十六进制

    public class chsHex{/// <summary>/// 从汉字转换到16进制/// </summary>/// <param name="s& ...

  8. 新电脑配置 git 同步github账户

    1.下载安装git 2.初始化 仓库文件夹 git init 3.生成公钥ssh-keygen -t rsa -C "youremail@example.com"4.github ...

  9. (一)Centos7安装zabbix3.4 server端

    (1)环境准备 关闭firewalld和selinux systemctl stop firewalld systemctl disable firewalld #sed -ri '/^SELINUX ...

  10. Java基础:GC机制

    上一节,简单的介绍了java当中的内存模型,那么经常和内存模型一起提到的JAVA垃圾回收机制当然也需要在这里一并的总结一下. 所谓是垃圾回收机制,用通俗的话来说,就是将那些没有被任何变量引用的实例对象 ...