Передача нескольких заголовков запросов в 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 с моим запросом.