winhttp 协议头中取出cookie

CString GetCookieString(CString& strRspHeader)
{
CString retCookie, strKey = _T("Set-Cookie: ");
int iBegin = 0, iEnd = 0;
while(iBegin < strRspHeader.GetLength())
{
iBegin = strRspHeader.Find(strKey, iBegin);
if (iBegin >= 0)
{
iEnd = strRspHeader.Find(_T("\r\n"), iBegin);
if (iEnd > 0)
{
retCookie += strRspHeader.Mid(iBegin, iEnd-iBegin+2);
iBegin = iEnd;
}
}else{
break;
}
}

return retCookie;
}

转载于:https://www.cnblogs.com/yedehei/p/5316953.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用WinHttpAddRequestHeaders函数提交协议头和cookie的示例代码: ``` #include <Windows.h> #include <Winhttp.h> #include <iostream> #pragma comment (lib, "winhttp.lib") int main() { HINTERNET hSession = WinHttpOpen(L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if (!hSession) { std::cout << "Error: Failed to open WinHTTP session." << std::endl; return 1; } HINTERNET hConnect = WinHttpConnect(hSession, L"www.example.com", INTERNET_DEFAULT_HTTPS_PORT, 0); if (!hConnect) { std::cout << "Error: Failed to connect to server." << std::endl; WinHttpCloseHandle(hSession); return 1; } HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"GET", L"/", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); if (!hRequest) { std::cout << "Error: Failed to open HTTP request." << std::endl; WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } LPCWSTR headers = L"Content-Type: application/json\r\nAuthorization: Bearer <access_token>\r\nCookie: sessionid=<session_id>; csrftoken=<csrf_token>\r\n"; if (!WinHttpAddRequestHeaders(hRequest, headers, (DWORD)-1L, WINHTTP_ADDREQ_FLAG_REPLACE)) { std::cout << "Error: Failed to add request headers." << std::endl; WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } if (!WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, NULL)) { std::cout << "Error: Failed to send HTTP request." << std::endl; WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } if (!WinHttpReceiveResponse(hRequest, NULL)) { std::cout << "Error: Failed to receive HTTP response." << std::endl; WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } // Do something with the response... WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 0; } ``` 在上面的示例中,我们使用了WinHttpAddRequestHeaders函数来添加了三个请求头:Content-Type、Authorization和Cookie。其中,Authorization字段用于传递访问令牌,Cookie字段用于传递会话ID和CSRF令牌。请注意,这些值都是虚构的,需要根据实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值