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


在项目中使用以下引用头

#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
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零点零一

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值