winhttp 发送 get 请求「建议收藏」

winhttp 发送 get 请求「建议收藏」由于微端要和服务器交互,而服务器又只有http协议的处理,所以需要用C++来模拟get或post请求。这是使用windowsapi来模拟get请求的,使用到的库有“winhttp”,头文件有“winhttp.h”,下面的代码来源于http://msdn.microsoft.com:12345678

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

由于微端要和服务器交互,而服务器又只有http协议的处理,所以需要用C++来模拟get或post请求。
这是使用windows api来模拟get请求的,使用到的库有“winhttp”,头文件有“winhttp.h”,下面的代码来源于http://msdn.microsoft.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
void 
getRequest(){
    
DWORD
dwSize = 0;
    
DWORD
dwDownloaded = 0;
    
LPSTR
pszOutBuffer;
    
BOOL
bResults = FALSE;
    
HINTERNET hSession = NULL,
              
hConnect = NULL,
              
hRequest = NULL;
 
    
hSession = WinHttpOpen(L
"A WinHTTP Example Program/1.0"
,
                           
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                           
WINHTTP_NO_PROXY_NAME,
                           
WINHTTP_NO_PROXY_BYPASS, 0);
 
    
if
(hSession)
        
hConnect = WinHttpConnect(hSession, L
"oschina.net"
,
                                  
INTERNET_DEFAULT_HTTP_PORT, 0);
 
    
if
(hConnect)
        
hRequest = WinHttpOpenRequest(hConnect, L
"GET"
,
                                      
L
"/search?q=python"
,
                                      
NULL, WINHTTP_NO_REFERER,
                                      
WINHTTP_DEFAULT_ACCEPT_TYPES,
                                      
0);
 
    
if
(hRequest)
        
bResults = WinHttpSendRequest(hRequest,
                                      
WINHTTP_NO_ADDITIONAL_HEADERS,
                                      
0, WINHTTP_NO_REQUEST_DATA, 0,
                                      
0, 0);
 
    
if
(bResults)
        
bResults = WinHttpReceiveResponse(hRequest, NULL);
 
    
if
(bResults)
    
{
        
do
        
{
            
dwSize = 0;
            
if
(!WinHttpQueryDataAvailable(hRequest, &dwSize))
                
printf
(
"Error %u in WinHttpQueryDataAvailable.\n"
,
                       
GetLastError());
 
            
pszOutBuffer =
new
char
[dwSize+1];
 
            
ZeroMemory(pszOutBuffer, dwSize+1);
 
            
if
(!WinHttpReadData(hRequest, (
LPVOID
)pszOutBuffer,
                                 
dwSize, &dwDownloaded))
                
printf
(
"Error %u in WinHttpReadData.\n"
, GetLastError());
            
else
                
printf
(
"%s\n"
, pszOutBuffer);
 
            
delete
[] pszOutBuffer;
        
}
while
(dwSize > 0);
    
}
 
    
if
(!bResults)
        
printf
(
"Error %d has occurred.\n"
, GetLastError());
 
    
if
(hRequest) WinHttpCloseHandle(hRequest);
    
if
(hConnect) WinHttpCloseHandle(hConnect);
    
if
(hSession) WinHttpCloseHandle(hSession);
}

这段代码时模拟请求开源中国查询python相关信息的,亲测可用,做个记录方便以后查找。

地址:http://fastfood.sinaapp.com/?p=1250

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157727.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言输出的字体和背景颜色你会设置吗!

    C语言输出的字体和背景颜色你会设置吗!学了那么久C语言,难免会所写对程序输出内容颜色感到单调,总想整点酷的东西………

    2022年6月20日
    27
  • Spring Framework 下载链接_现在有空

    Spring Framework 下载链接_现在有空

    2022年1月10日
    41
  • long转string mybatis_Long转String总结

    long转string mybatis_Long转String总结平时很少会使用到,今天用到了,做一个小总结。1.程序packagecom.jun.webpro.common.units;/***列举了两种比较常见的Long转String的方法*通过测试,发现如果传入null,则第一种方式报错;第二种方式打印出null字符串*/publicclassLongToStringUtils{/***使用Long的方法*@paramvalueLong…

    2022年5月15日
    152
  • ATECC508A芯片开发笔记(一):初识加密芯片

    ATECC508A芯片开发笔记(一):初识加密芯片近年来,随着黑客网络攻击事件频繁发生,网络安全问题亟待解决,同时security方面的软件解决方案也正快速更迭,相关软件开发人员也变得更紧缺。使用传统纯软件的方法实现网络安全加解密、身份认证等算法存在较多缺陷,如执行各类算法的时间、资源消耗较大,并且无法实现密钥等secret的安全存储,这时各类芯片厂商推出了硬件加密芯片来解决上述问题,在增加系统安全性的同时,也极大提高了软件效率。因此针…

    2022年6月25日
    40
  • 负载均衡的算法有哪些_流量负载均衡

    负载均衡的算法有哪些_流量负载均衡G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。数据保证一定有解。输入格式第 1 行中有 1 个正整数 n,表示有 n 个仓库。第 2 行中有 n 个正整数,表示 n 个仓库的库存量。输出格式输出最少搬运量。数据范围1≤n≤100,每个仓库的库存量不超过 100。输入样例:517 9 14 16 4输出样例:11#include<bits/stdc++.

    2022年8月11日
    3
  • es6数组方法总结

    es6数组方法总结1、for循环2、foreach(es5)3、map(es5)4、some5、every6、filter功能需求:扫码枪扫商品去判断当前护理项目下面是否存在这个商品如果有那么就存在前端的集合里面如果没有则提醒没有此商品护理项目会有多个会存在多个护理项目下面存在相同的商品需要核销判断此商品是否存在我是用的some方法letnewAry=_this.goodsList.some(n=>{ letres=n.goodsList.some(r=&.

    2022年5月2日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号