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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一道线程同步面试题

    一道线程同步面试题

    2021年11月13日
    42
  • 很有趣的Java分形绘制

    部分与整体以某种形式相似的形,称为分形。首先我们举个例子:我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形。换句话说,较小的分支通过放大适当的比例后可以得到一个与整体

    2021年12月20日
    58
  • 批处理for详解_python批处理

    批处理for详解_python批处理大纲一前言二for语句的基本用法三for/f(delims、tokens、skip、eol、userbackq、变量延迟)四for/r(递归遍历)五for/d(遍历目录)六for/l(计数循环) 一、前言在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto…

    2022年10月12日
    3
  • C#的封装_封装元器件

    C#的封装_封装元器件封装:即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的作用:封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作封装的优点:1.良好的封装能够减少

    2025年10月12日
    2
  • Hsql 查询_sql数据查询

    Hsql 查询_sql数据查询还是班级,学省

    2022年9月22日
    3
  • Spring学习——Spring常用数据库访问设置

    Spring学习——Spring常用数据库访问设置

    2022年2月24日
    46

发表回复

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

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