Приведенный ниже фрагмент кода отправляет запрос на 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 );