c# - c# CURLOPT_COOKIEJAR 和 CURLOPT_COOKIEFILE 与 HttpClient
问题描述
我想用 HttpClient 在 C# 中复制以下代码。这是使用与响应中返回的相同 cookie 的 php 代码
if($cookies) {
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__). '/cookies.txt');
} else {
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__). '/cookies.txt');
}
到目前为止我所做的如下
var returnedCookies = response.Headers.GetValues("Set-Cookie").ToList();
然后将其用作
string newCookie = string.Join(";",returnedCookies);
client.DefaultRequestHeaders.Add("Cookie", newCookie);
我不明白为什么这不起作用,我也尝试过使用CookieContainer
但它不起作用。有关此的任何帮助,或者是否有任何包装器或库可用于cURL
IllC#
这样做。
解决方案
看看 LibCurlNet https://github.com/pjquirk/libcurl.NET
它有一些非常好的示例,您实际上可以使用 c# 发送 curl 请求
public void sendCurlRequest(string url, bool post, string post_aata, bool cookies)
{
try
{
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
Easy easy = new Easy();
Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);
string writingData = string.Empty;
easy.SetOpt(CURLoption.CURLOPT_URL, instagramUrl + url);
easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, 1);
easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0);
easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0);
if (post)
{
easy.SetOpt(CURLoption.CURLOPT_POST, 1);
File.WriteAllText("D:\\cookies\\post_data.txt", System.Web.HttpUtility.UrlEncode(post_aata));
easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, post_aata);
}
if (cookies)
{
easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, "\cookies.txt");
}
else
{
easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, "cookies.txt");
}
var c = easy.Perform();
int info = 0;
CURLcode code = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref info);
easy.Cleanup();
Curl.GlobalCleanup();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
推荐阅读
- javascript - 刷新时未加载新数据
- python - 如何检测 Firebase Firestore 数据库中的实时监听器错误?
- ssh - Cygwin key_load_public:格式无效
- javascript - 使用带有选择的 onclick 事件
- python - 如何测试我用 Keras 创建的模型
- python - 寻找有关 lstm 模型的建议
- javascript - 无法使用 Ajax 将数据列表从控制器返回到视图中的下拉列表。我收到未定义的未定义错误
- mysql - 从 MySQL 表中更新 x 行
- javascript - 没有 AJAX Jquery 的 HTA 将内容加载到 div
- r - 如何将时间戳与R中的时间段匹配