HttpWebRequest GetResponse сбит с толку 100 кодов продолжения - PullRequest
0 голосов
/ 11 октября 2018

Приведенный ниже фрагмент кода отправляет запрос на URL-адрес, затем получает ответ.

Я наблюдал за его поведением в Wireshark.В Wireshark я вижу исходящий запрос POST и затем я получаю два ответа.
Первый - это "100 Continue" ответ.Второй ответ - "200 OK".
Отправка этого запроса в веб-браузере приводит к точно таким же ответам, и браузеры правильно определяют его как ответ "ОК".

Если я правильно понимаю,Ответ "100 Continue" должен обрабатываться .net за кулисами, и поэтому моя переменная "lResponse" должна захватывать "200 OK".Однако вместо этого lWebRequest.GetResponse( ) выдает ошибку, сообщающую о получении ответа "100 Continue".

Я попытался установить Expect100Continue на ServicePointManager и true, и false, и я попытался увеличить время ожидания продолжения.Ни один не имел никакого значения.

HttpWebRequest lWebRequest = ( HttpWebRequest ) WebRequest.Create( "REMOVED" );
lWebRequest.Method = "POST";
lWebRequest.ContentLength = lsPost.Length;
lWebRequest.ContentType = "application/x-www-form-urlencoded";
lWebRequest.Host = "REMOVED";
lWebRequest.Referer = "REMOVED";

StreamWriter lStreamWriter = null;

try
{
    lStreamWriter = new StreamWriter( lWebRequest.GetRequestStream( ) );
    lStreamWriter.Write( lsPost );
}
catch ( Exception lError )
{
    Console.WriteLine( lError.Message );
    return;
}
finally
{
    lStreamWriter.Close( );
}

HttpWebResponse lResponse = null;

try
{
    lResponse = ( HttpWebResponse ) lWebRequest.GetResponse( );
}
catch ( Exception lError )
{
    Console.WriteLine( lError.Message );
    return;
}

String lsResult = "";

using ( StreamReader lStreamReader = new StreamReader( lResponse.GetResponseStream( ) ) )
{
    lsResult = lStreamReader.ReadToEnd( );

    lStreamReader.Close( );
}
Console.WriteLine( lsResult );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...