HttpWebRequest GetResponse混淆了100个继续代码

时间:2018-10-11 09:47:27

标签: c# .net http networking .net-core

下面的代码段将请求发送到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 );

0 个答案:

没有答案