VC实现http发送get和post请求

2023-05-16

VC实现http发送get和post请求

get请求

首先通过前面介绍的抓包工具获取请求的详细内容,然后再通过VC拼接Header,函数如下:
bool CXXX::http_get_eng_mode()
{
	//<?xml version=\"1.0\" encoding=\"US-ASCII\"?> 


<RGW><param><method>call</method><session>000</session><obj_path>cm</obj_path><obj_method>get_wan_configs</obj_me


thod></param></RGW>
	CString strURL=_T("http://")+loginfo.strIPAddress+_T("/xml_action.cgi?


method=get&module=duster&file=wan");
	bool bResult = false;
	DWORD dwType = 0;
	CString strServer;
	CString strObject;
	INTERNET_PORT wPort = 0;
	DWORD dwFileLength = 0;


	bResult =  AfxParseURL(strURL, dwType, strServer, strObject, wPort);
	if(!bResult)
	{
		return false;
	}
	int iCount=0;
	bool bRet=true;
	while (bRet)
	{
		if (iCount>2)
		{
			bRet=false;
		}
		try
		{
			CInternetSession Session ; 
			CHttpConnection *pHttpConnect = Session.GetHttpConnection(strServer, wPort) ;
			if(pHttpConnect)
			{
				CHttpFile* pFile = pHttpConnect->OpenRequest( CHttpConnection::HTTP_VERB_GET, 
					_T("/xml_action.cgi?method=get&module=duster&file=wan")); //
				if ( pFile )
				{
					CString strAuthHeader=getAuthHeader


(loginfo.strAdmin,loginfo.strPassword,"GET");
					pFile->AddRequestHeaders(strAuthHeader);
					pFile->AddRequestHeaders("Expires: -1");					
					pFile->AddRequestHeaders("Accept: */*");					
					pFile->AddRequestHeaders("Cache-Control: no-store, no-cache, must-


revalidate");
					pFile->AddRequestHeaders("Pragma: no-cache");
					pFile->AddRequestHeaders("X-Requested-With: XMLHttpRequest");
					CString strTemp=_T("");strTemp=_T("Referer: 


http://")+loginfo.strIPAddress+_T("/index_pc.html");
					pFile->AddRequestHeaders(strTemp);
					pFile->AddRequestHeaders("Accept-Language: zh-CN");
					pFile->AddRequestHeaders("Accept-Encoding: gzip, deflate");
					pFile->AddRequestHeaders("User-Agent: Mozilla/5.0 (Windows NT 6.1; 


Trident/7.0; rv:11.0) like Gecko");
					CString strHost=_T("Host: ")+loginfo.strIPAddress;
					pFile->AddRequestHeaders(strHost) ;
					pFile->AddRequestHeaders("Connection: Keep-Alive");
					pFile->AddRequestHeaders("Cookie: locale=en; platform=mifi") ;


					if (!pFile->SendRequest())
					{
						pFile->Close();
						pHttpConnect->Close();						
						return false;
					}
					
					DWORD dwStateCode = 0;
					pFile->QueryInfoStatusCode(dwStateCode);
					if(dwStateCode == HTTP_STATUS_OK) 
					{
						CString strInfo1;
						DWORD dw1=0;
						pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF ,strInfo1 ,&dw1) ;
						CString strInfo2;
						DWORD dw2=0;
						pFile->QueryInfo(HTTP_QUERY_CONTENT_BASE ,strInfo2 ,&dw2);
						char content_return[1024*10];memset(content_return,0,1024*10);
						pFile->Read(content_return, SERVER_CONTENT_LEN);
						
						//解析xml,查询工程模式
						CString str=getEngMode_1802(_bstr_t(content_return));
						if (!str.IsEmpty())
						{
							if (!IsEngModeOpen(0,str))
							{
								//如果没有开启的话,需要先打开
								http_set_eng_mode_1802(true);
							}
						}
						else
						{
							bResult=false;
						}						
					}
					else
					{
						bResult=false;
					}
					pFile->Close();
					delete pFile ;
					bRet=false;
				}
				pHttpConnect->Close() ;
				delete pHttpConnect ;
			}
		}
		catch( CInternetException *e )
		{
			e->Delete();    
		}
	}
	return bResult;
}

post请求

bool CXXX::http_set_eng_mode(bool bEnable)
{
	CString requestData=_T("");
	if (bEnable)
	{
		requestData = "<?xml version=\"1.0\" encoding=\"US-ASCII\"?> 


<RGW><param><method>call</method><session>000</session><obj_path>cm</obj_path><obj_method>set_eng_mode</obj_metho


d></param><wan><mode>1</mode></wan></RGW>";
	}
	else
	{
		requestData = "<?xml version=\"1.0\" encoding=\"US-ASCII\"?> 


<RGW><param><method>call</method><session>000</session><obj_path>cm</obj_path><obj_method>set_eng_mode</obj_metho


d></param><wan><mode>0</mode></wan></RGW>";
	}
	
	CString strURL=_T("http://")+loginfo.strIPAddress+_T("/xml_action.cgi?method=set");
	bool bResult = false;
	DWORD dwType = 0;
	CString strServer;
	CString strObject;
	INTERNET_PORT wPort = 0;
	DWORD dwFileLength = 0;


	bResult =  AfxParseURL(strURL, dwType, strServer, strObject, wPort);
	if(!bResult)
	{
		return false;
	}
	int iCount=0;
	bool bRet=true;
	while (bRet)
	{
		if (iCount>2)
		{
			bRet=false;
		}
		try
		{
			
			CInternetSession Session ; 
						
			CHttpConnection *pHttpConnect = Session.GetHttpConnection(strServer, wPort) ;
			if(pHttpConnect)
			{
				CHttpFile* pFile = pHttpConnect->OpenRequest( CHttpConnection::HTTP_VERB_POST, 
					_T("/xml_action.cgi?method=set"),
					NULL,
					1,
					NULL,
					NULL,
					INTERNET_FLAG_NO_COOKIES); //
				if ( pFile )
				{					
					//打开工程模式
					pFile->AddRequestHeaders("Accept: application/xml, text/xml, */*; 


q=0.01");
					pFile->AddRequestHeaders("Content-Type: application/x-www-form-


urlencoded; charset=UTF-8");
					CString strAuthHeader=getAuthHeader


(loginfo.strAdmin,loginfo.strPassword,"POST");
					pFile->AddRequestHeaders(strAuthHeader);
					pFile->AddRequestHeaders("X-Requested-With: XMLHttpRequest");
					CString strTemp=_T("");strTemp=_T("Referer: 


http://")+loginfo.strIPAddress+_T("/index.html");
					pFile->AddRequestHeaders(strTemp);
					pFile->AddRequestHeaders("Accept-Language: zh-CN");
					pFile->AddRequestHeaders("Accept-Encoding: gzip, deflate");
					pFile->AddRequestHeaders("User-Agent: Mozilla/5.0 (Windows NT 6.1; 


Trident/7.0; rv:11.0) like Gecko");
					CString strHost=_T("Host: ")+loginfo.strIPAddress;
					pFile->AddRequestHeaders(strHost);
					int iLength=requestData.GetLength();
					CString strLength=_T("");strLength.Format("Content-Length: %d",iLength);
				
					pFile->AddRequestHeaders(strLength);
					pFile->AddRequestHeaders("Connection: Keep-Alive");
					pFile->AddRequestHeaders("Pragma: no-cache");
					//Cookie: CGISID=8CeJlM1rEpSJSaCag78vaHYqoF9EewhmbnYo9QFF6zqZG
					
					CString strCookie1=_T("Cookie: ")+setcookie;
					pFile->AddRequestHeaders(strCookie1);


					if(!pFile->SendRequest(NULL,0,(void*)requestData.GetBuffer


(requestData.GetLength()), requestData.GetLength()))
					{
						pFile->Close();
						pHttpConnect->Close();						
						return false;
					}			
					DWORD dwStateCode = 0;
					pFile->QueryInfoStatusCode(dwStateCode);
					
					if(dwStateCode == HTTP_STATUS_OK) 
					{
						CString strInfo1;
						DWORD dw1=0;
						pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF ,strInfo1 ,&dw1);
						char content_return[1024*10];memset(content_return,0,1024*10);
						pFile->Read(content_return, SERVER_CONTENT_LEN);
					}
					pFile->Close();
					delete pFile ;
					bRet=false;
				}
				pHttpConnect->Close() ;
				delete pHttpConnect ;
			}
		}
		catch( CInternetException *e )
		{
			e->Delete();    
		}
	}
	return bResult;
}

较get请求而言,主要是除了Header外还需要post数据。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC实现http发送get和post请求 的相关文章

  • HTTP请求压缩

    一般用例 想象一下一个正在上传大量 JSON 的客户端 内容类型应保留application json因为这描述了实际数据 Accept Encoding 和 Transfer Encoding 似乎是为了告诉服务器应该如何格式化响应 看起
  • 在 Ubuntu 12.04 上的 Apache 上配置 SVN 服务器

    我正在尝试通过 HTTP 访问现有的 Subversion 服务器 我的dav svn conf文件看起来像
  • $_POST 不包含所有数据

    几天前 我们的一家网上商店遇到了问题 Gambio基于xtC 我们有一个包含 3000 多个文本字段的公式 其中大约前三分之一工作正常 其余的都是空的 看来 POST 已正确填充 但在服务器上 应用程序获得了一个缩减的数组 我在不同的计算机
  • 是否有管理 __utma、__utmz 等 cookie 的标准?

    无论我登录 Facebook 还是 Twitter 我都会受到以下名称的 cookie 轰炸 utma utmb utmc utmv 它们的功能是什么 是否有一个标准来管理这些在服务器端的使用方式 这些 cookie 通常与谷歌分析 htt
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 在 WebView 中拦截 POST 请求

    我正在开发一个 Android 应用程序来过滤请求 使用白名单 并使用自定义SSLSocketFactory 为此 我开发了一个自定义的WebViewClient我已经覆盖了shouldInterceptRequest方法 我可以过滤并使用
  • HTTP 和 HTTPS iframe

    我正在创建一个小部件 我想允许其他人使用它 这iframe通过 HTTP 加载 但我想允许用户通过 HTTPS 登录 即通过 SSL 发送登录请求 同源策略中允许这样做吗 即 场景是用户可以将我的 JavaScript 集成到他们的网站 小
  • Perl:LWP::UserAgent 对于重定向 URL 始终返回代码 200

    我有一个简单的 url 它执行 302 临时错误 移至另一页 我尝试在 URL 返回代码 200 表示 OK 时检索它 并在返回 200 以外的其他内容时停止 My code my ua LWP UserAgent gt new env p
  • HTTP部分上传、断点续传的标准方法

    我正在开发 http 客户端 服务器框架 并寻找处理部分上传的正确方法 与使用带有 Range 标头的 GET 方法进行下载相同 但是 HTTP PUT 并不打算恢复 据我所知 PATCH 方法不接受 Range 标头 有没有办法通过 HT
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • 外部依赖错误的 HTTP 状态代码

    当服务器与外部 API 通信出现问题时 返回的正确 HTTP 状态代码是什么 假设客户端向我的服务器 A 发送有效请求 然后 A 查询服务器 B 的 API 以便执行某些操作 然而 B 的 API 当前抛出 500 错误或因某种原因无法访问
  • 是否可以修改 $_SESSION 变量?

    恶意用户是否可以将 SESSION 在 php 中 变量设置为他想要的任何值 很大程度上取决于您的代码 有一点非常明显 SESSION username REQUEST username
  • 以 RESTful 方式增加资源计数器:PUT 与 POST

    我有一个带有计数器的资源 为了举例 我们将该资源称为profile 计数器是数量views对于该配置文件 Per the 休息维基 http rest blueoxen net cgi bin wiki pl HttpMethods PUT
  • 响应 301 永久移动

    我曾经得到以下对 php 请求的响应 回复
  • HTTP代理服务器

    我开始研究一个用 C 编写的非常基本的 HTTP 代理服务器 Edit 只是转发我的请求的东西 此时我很难理解如何继续 任何帮助都会有益的 看一眼micro proxy http acme com software micro proxy
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 使用什么 API 在现有 MFC 应用程序中添加 HTTP 客户端支持?

    我最近接到一项任务 要添加与以下内容交互的能力网络地图服务 http en wikipedia org wiki Web Map Service到现有的 MFC 应用程序 我需要客户端 HTTP API 根据我的研究 领先的候选人似乎是CA
  • 使用 Http Post 发送图像

    我想使用 Http Post 将图像从 android 客户端发送到 Django 服务器 该图像是从图库中选择的 目前 我正在使用列表值名称 Pairs 将必要的数据发送到服务器并接收来自 Django 的 JSON 响应 是否可以对图像
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • 在 PHP 中 POST Base64 编码数据

    我需要使用 cURL 将一些数据 POST 到 PHP 页面 并且该请求包含三个参数 其中两个是常规文本值 一种是Base64编码的文件 我注意到 Base64 值在传输过程中被损坏 这是发送请求的代码 filename img2 jpg

随机推荐

  • C++如何监听http请求

    下面有个例子 xff0c 基于 Windows 的 xff0c 编译完 xff0c 运行 WebSrv 7070 即可 在程序的目录中放一个 index html 文件 Copyright c 2002 2005 by Zhang Huiy
  • 我的网页作品(div+css)

    前段时间为一个育儿网站做了一个个人空间主页 xff0c 这可是我的处女座 呵呵 请点击查看 xff1a Files shiyangxt baobaoke rar
  • 我用Visual Basic做的多模式计算器(应用小软件)!

    前一段时间参加了一个校内组织的IT实践大赛 xff0c 虽然当时没什么成熟的技术 xff0c 但是还是参加了 Visual Basic刚学也没多长时间 xff0c 于是就做了这个多模式计算器 xff0c 虽然技术含量不算高 xff0c 一些
  • C语言实现阶乘累加(1!+2!+3!+....+n!=?)

    最近要期末考试 xff0c 复习C语言 xff0c 见到一个看似很简单的问题 就是C语言实现阶乘累加 xff08 1 xff01 43 2 xff01 43 3 43 43 n 61 xff09 本来觉得这个肯定小意思 xff0c 但是修改
  • C++项目工程(包含opencv库以及项目的依赖库移植)编译成android可以使用的so库并在Android studio上调用so库进行使用(血泪操作总结)

    目录结构 概述预先准备编译操作so的函数导出并在android进行调用 概述 最近负责一个android项目需要使用到之前公司师兄编写的c 43 43 算法库 xff0c 一开始并不知道c 43 43 项目可以移植给android项目使用
  • C语言:用递归实现将输入的整数按逆序输出。如输入12345,则输出54321。

    这个程序是我对构造函数有个更深的认识 首先构造函数要先从头至尾走一边才会输出 xff0c 无论输出语句加的位置 xff08 循环内 xff0c 条件语句内 除外 xff09 然后构造函数递归可以把问题简单化 xff0c 本题如果按常规思路
  • Visual Basic函数大全!

    VB函数大全 Abs 函数 返回数的绝对值 And 运算符 执行两个表达式的逻辑连接 Array 函数 返回含一数组的 变体 Asc 函数 返回字符串首字母的 ANSI 字符代码 赋值运算符 61 给变量或属性赋值 Atn 函数 返回数的反
  • 数据结构与算法:哈夫曼树(源码)!

    这些天明白了一个道理 xff0c 搞技术也是需要激情的 也不知道为什么这段过的感觉特别的不爽 xff0c 也不知道是因为快要考试了 xff0c 心里没底 xff0c 而带来的恐惧 xff0c 还是 搞技术太久 xff0c 心里想放个假 xf
  • SSH超实用分页实现(原创开源)!

    SSH的分页网上有不少的例子 xff0c 有利用session的 xff0c 有利用分页组件的 我几个师兄原来搞的SSH项目也有一个成熟的分页插件 具体业务实现类中的分页方法 xff1a lt bgsound cep 61 34 0 34
  • 欢迎访问我的主博(http://shiyangxt.cnblogs.com)

    JavaEye的朋友 xff0c 大家好 我是一名大二的学生 xff0c 对编程技术怀有很大的热情 我的技术方向是Java xff0c 但是我的主博并不在这里 xff0c 而在博客园 xff0c 欢迎大家访问我的主博 施杨de编程世界 我渴
  • Linux应用编程---14.UDP服务器、客户端编程

    Linux应用编程 14 UDP服务器 客户端编程 之前有介绍过UDP是一种无连接 尽最大努力交付 面向报文的协议 应用层交给UDP多长的报文 xff0c UDP就照样发送 Linux下UDP属于数据报socket 数据报socket流程图
  • 0816网络编程day5

    include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt netinet
  • STL容器特征

    STL中顺序容器类和关联容器类的主要特征如下 xff1a 1 vector 内部数据结构 xff1a 数组 随机访问每个元素 xff0c 所需要的时间为常量 在末尾增加或删除元素所需时间与元素数目无关 xff0c 在中间或开头增加或删除元素
  • 数据结构——不带头结点的单链表的基本操作

    数据结构 不带头节点的单链表的基本操作 结构体的创建 xff1a span class token keyword typedef span span class token keyword struct span SListNode sp
  • HTTP请求/响应报文结构

    HTTP请求 响应报文结构 HTTP请求报文 一个HTTP请求报文由四个部分组成 xff1a 请求行 请求头部 空行 请求数据 1 请求行 请求行由请求方法字段 URL字段和HTTP协议版本字段3个字段组成 xff0c 它们用空格分隔 比如
  • C语言练习笔记 ~结构体2 ~ 结构体在内存中的对齐说明

    文章目录 1 结构体变量在内存中的对齐说明例1 1个char型变量例2 2个char型变量例3 1个int型变量例4 1个char型变量和1个int型变量例5 3个char型变量和1个int型变量例6 5个char型变量和1个int型变量例
  • 思岚激光雷达+cartographer建图

    系统环境 xff1a Ubuntu18 04 ROS Melodic gcc 7 5 0 1 安装思岚ROS包 1 1 clone并编译 cd catkin ws src git clone https github com Slamtec
  • 使用PyTorch+functorch计算并可视化NTK矩阵

    2022年3月 xff0c PyTorch发布了PyTorch1 11和functorch functorch灵感来自于Google JAX xff0c 旨在提供vmap和autodiff转换配合PyTorch使用 本文将演示如何使用PyT
  • libcurl异步请求+http长连接池

    由于公司项目 xff0c 需要localhost的形式高并发的http访问本机服务 xff0c 所以面临了两方面的问题 xff1a 1 http短连接会造成大量的time wait xff0c 影响服务器的性能 2 libcurl easy
  • VC实现http发送get和post请求

    VC实现http发送get和post请求 get请求 首先通过前面介绍的抓包工具获取请求的详细内容 xff0c 然后再通过VC拼接Header xff0c 函数如下 xff1a bool CXXX http get eng mode lt