Я пытаюсь опубликовать некоторые данные и получить некоторые данные с веб-сайта. Сайт не предоставляет никаких веб-сервисов или API, и у меня нет способа изменить сайт. Единственный вариант - очистка экрана HTML. Чтобы опубликовать данные, мне сначала нужно войти в систему, получить файл cookie на другой странице, получить еще один файл cookie и перейти на последнюю страницу, чтобы опубликовать данные. Мне не нужен какой-либо html с первых двух страниц, но для получения последнего сообщения нужны куки-файлы. Я использую System.Net.HttpWebRequest для навигации по сайту. Можно ли получать только файлы cookie (заголовки сервера) без загрузки всей страницы? Прямо сейчас я использую метод GetReponse() для получения потока ответов.Есть ли способ получить куки, не читая всю страницу?
ответ
Нет, если вы отправляете запрос POST. Вы можете получить только заголовки, отправив запрос HEAD, но тогда вы не сможете публиковать необходимые учетные данные.
Я думаю, что это зависит от сайта. Теоретически, если вы используете запрос HEAD, сайт должен отвечать заголовками, но без каких-либо данных, похоже, что вам нужно, на самом деле все зависит от фактического веб-сайта.
Вы должны (теоретически) уметь устанавливать Method
на вашем HttpWebRequest
до HEAD
и получите только заголовки.
с win32 api вы можете прочитать только заголовок ответа и отказаться от соединения после. Посмотрите на wininet.
Что касается предиката HEAD, он может работать в некоторых ситуациях, в то время как в других он не будет. Некоторые страницы фактически проверяют предикат и принимают меры на основе этого.
HEAD похож на GET, но без получения HTML/полезной нагрузки ответа. AFAIK нет эквивалента POST. – dtb