Передача нескольких заголовков запросов в libcurl.net

Недавно я начал использовать libcurl.net с одним из моих проектов в качестве замены HttpWebRequest а также HttpWebResponse классы. Причина, по которой я решил использовать libcurl.net вместо управляемых классов, заключается в том, что libcurl.net имитирует поведение cURL из PHP, и я переносил некоторый код из PHP. Я пытался использовать встроенные управляемые классы, но CookieContainer Компания не правильно собирала все файлы cookie с веб-сайта, с которого я пытался получить файлы cookie. Я могу в конечном итоге вернуться к управляемым классам, если смогу понять, как правильно перехватить файлы cookie.

Мой PHP-скрипт отлично работает при захвате куки, поэтому я перенес большую часть функций cURL, используя libcurl.net, в свой проект на C#. У меня проблема, когда мне нужно отправить более одного заголовка запроса с CURLOPT_HTTPHEADER Опция cURL, и я должен использовать тип данных Slist для передачи более одного заголовка, например, так:

Slist headers = new Slist();
headers.Append("Content-Type: application/x-www-form-urlencoded");
headers.Append("X-Requested-With: XMLHttpRequest");
easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers);

Иногда мне приходится подделывать запрос AJAX, но он, похоже, не проходит X-Requested-With: XMLHttpRequest заголовок с запросом, поскольку веб-сайт, который я очищаю, не возвращает никаких результатов для этих "поддельных" запросов AJAX. Если я установлю CURLOPT_HTTPHEADER мне нужно установить Content-Type заголовок или это всегда по умолчанию Content-Type: application/x-www-form-urlencoded?

1 ответ

Решение

Оказывается, я правильно добавил несколько заголовков. Я просто сделала Slist объект и добавил мои заголовки к запросу, используя CURLOPT_HTTPHEADER вариант. Таким образом, можно "подделать" AJAX-запросы или запросы любого другого типа, отправленные веб-браузером. Проблема заключалась в том, что я не отправлял правильные данные POST с моим запросом.

Другие вопросы по тегам