wininet进行http请求时候,当服务器端返回setcookie设置JSESSIONID就会自动设置该cookie

xiaoxiao2021-02-27  316

在项目中使用以下引用头

#include <wininet.h> #pragma comment(lib, "wininet.lib")

可以使用wininet进行网络编程,

wininet进行http请求时候,当服务器端返回setcookie设置JSESSIONID就会自动设置该cookie,下载继续访问就会持续带有。验证例子如下。

#include <windows.h> #include <wininet.h> #include <stdio.h> #pragma comment(lib, "wininet.lib") HINTERNET hInternetOpen; HINTERNET hInternetConnect; HINTERNET hRequest; DWORD dwSize = 1024; //存放提取的cookie LPVOID lpOutBuffer = new char[dwSize]; int TestWininet(LPCSTR lpszSerNam, INTERNET_PORT myPort, char* path, char* data) { bool flag; LPVOID lpDataBuffer = new char[dwSize]; memset(lpDataBuffer, 0, dwSize); //发包时需要的一个http头 static char hdrs[] = "Content-Type: application/x-www-form-urlencode"; //接受的文件类型,这里是全部 static LPCSTR accept[2] = {"*/*", NULL}; //打开一个链接 hInternetOpen = InternetOpenA("Test", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInternetOpen == NULL) { printf("Internet open failed!\n"); return 0; } //链接到一个服务器 hInternetConnect = InternetConnectA(hInternetOpen, lpszSerNam, myPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); if (hInternetConnect == NULL) { printf("Internet Connect failed!\n"); return 0; } //打开一个请求 hRequest = HttpOpenRequestA(hInternetConnect, "GET", path, NULL, NULL, accept, 0, 0); if (hRequest == NULL) { printf("Internet Request failed!\n"); return 0; } //发送请求 flag = HttpSendRequestA(hRequest, hdrs, strlen(hdrs), data, strlen(data)); //读取返回的cookie flag = HttpQueryInfoA(hRequest, HTTP_QUERY_SET_COOKIE, lpOutBuffer, &dwSize, NULL); printf("%s\n", lpOutBuffer); //读取放回的文本内容 InternetReadFile(hRequest, lpDataBuffer, 1024, &dwSize); printf("%s\n", lpDataBuffer); //关闭打开的句柄 InternetCloseHandle(hRequest); InternetCloseHandle(hInternetConnect); InternetCloseHandle(hInternetOpen); return 0; } int InetKeepSessionIDExample() { int i; //第一访问,获得sessionID //http://192.168.10.215:8080/sys/SysUserAction_isLogin.do?name=superman&password=talent TestWininet("192.168.10.215", 8080, "/sys/IPConfigAction_listLink.do", "yy");//第一次访问获取,第二次访问自然就带了,根本不用设置的。 TestWininet("192.168.10.215", 8080, "/sys/SysUserAction_isLogin.do?name=superman&password=talent", "yy");//可以看到第二次请求头cookie里面自然带有JSESSIONID }

转载请注明原文地址: https://www.6miu.com/read-2000.html

最新回复(0)