Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
c#, Webrequest, proxy и post data
#1
Думаю тут есть люди, должным образом понимающие механизмы работы http и прокси серверов, поэтому задам вопрос, на который на SO ответа не нашлось:

Собственно, имеется цепочка c# программа->proxy (обычный http прокси)->целевой сервер.
Через данную цепочку исправно проходят GET запросы и POST без параметров, но стоит добавить любой контент и прокси сервер возвращает ошибку.
Сравнивал заголовки и сам передаваемый контент - на первый взгляд все совпадает с данными, отправляемыми обычным браузером.
Ответ, возвращаемый сервером
Дабы не засорять первый пост кучей спойлеров - добавлю ссылку на SO на топик с листингами и подробностями.
http://stackoverflow.com/questions/23387...-post-data
Sad
Ответ
#2
AleBrider Написал:Думаю тут есть люди, должным образом понимающие механизмы работы http и прокси серверов, поэтому задам вопрос, на который на SO ответа не нашлось:

Собственно, имеется цепочка c# программа->proxy (обычный http прокси)->целевой сервер.
Через данную цепочку исправно проходят GET запросы и POST без параметров, но стоит добавить любой контент и прокси сервер возвращает ошибку.
Сравнивал заголовки и сам передаваемый контент - на первый взгляд все совпадает с данными, отправляемыми обычным браузером.
Ответ, возвращаемый сервером
Дабы не засорять первый пост кучей спойлеров - добавлю ссылку на SO на топик с листингами и подробностями.
http://stackoverflow.com/questions/23387...-post-data

Куда GET-запрос потеряли? ;D Почему в кип алайве не указано время?
Коннект идет случайно не на кириллический домен?
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#3
Pointer*Rage Написал:Коннект идет случайно не на кириллический домен?
Домен самый обычный, никакой кирилицы.
Pointer*Rage Написал:Почему в кип алайве не указано время?
request.Headers.Add("Keep-Alive: timeout=15");
Проставил, результат прежний.
Pointer*Rage Написал:Куда GET-запрос потеряли?
Тут не особо понял, запрос изначально шлется post методом.
request.Method = "POST";

Стоит отметить, что без прокси все нормально уходит.
Sad
Ответ
#4
AleBrider Написал:Домен самый обычный, никакой кирилицы.

request.Headers.Add("Keep-Alive: timeout=15");
Проставил, результат прежний.

Тут не особо понял, запрос изначально шлется post методом.
request.Method = "POST";

Стоит отметить, что без прокси все нормально уходит.

Дык почему в самом запросе его нету?
Код:
POST /post.php?tid=19 HTTP/1.1
Убрать нафиг длину запроса, она не пишется для POST (по информации возвращаемой прокси).
Плюс перейти на HTTP 1.0, ибо так просит сервер/прокси.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#5
Pointer*Rage Написал:Дык почему в самом запросе его нету?
Код:
POST /post.php?tid=19 HTTP/1.1
Убрать нафиг длину запроса, она не пишется для POST (по информации возвращаемой прокси).
Плюс перейти на HTTP 1.0, ибо так просит сервер/прокси.

Сработала смена протокола на 1.0, спасибо.
На версию протокола сам бы никогда не подумал, очень помогли.

Добавлено через 6 часов 46 минут
Небольшое уточнение, возможно кому-то поможет:
При смене протокола с 1.1 на 1.0 данные принудительно зипаются при наличии соотв. заголовка, при 1.1 такого не наблюдалось.
В своем случае просто убрал заголовок, ибо лишнее.
Sad
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Header POST запроса sednka 1 1,790 05-18-2013, 01:53 AM
Последний пост: Zubastic

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)