[英]Sending HTTP Headers with HTTP Web Request for NTLM Authentication
[英]HTTP Web Request is sending twice (How to fix?)
我有以下代码来执行Web请求并获取HTTP响应。 我想做的是,如果HTTP响应是
200 OK
我需要阅读响应正文,而无需再次发送Web请求(我知道我的代码当前发送了两次)。
try
{
using (WebResponse response = request.GetResponse())
{
HttpWebResponse httpResponse = (HttpWebResponse)response;
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
using (var webClient = new WebClient())
{
string result = webClient.DownloadString(request.RequestUri);
if(result.StartsWith("NUMBER NOT IN LIST"))
{
return "Number Not In List";
}
return result;
}
}
else if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
{
return statusCode = HttpStatusCode.Unauthorized.ToString();
}
else if (httpResponse.StatusCode == HttpStatusCode.BadRequest)
{
return statusCode = HttpStatusCode.BadRequest.ToString();
}
}
}
您要使用HttpWebResponse.GetResponseStream,如下所示:
HttpWebResponse.GetResponseStream方法
使用MSDN页面上的示例替换if (httpResponse.StatusCode == HttpStatusCode.OK)
的内容。
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
// we will read data via the response stream
var resStream = httpResponse.GetResponseStream();
var sr = new StreamReader(resStream);
var result = sr.ReadToEnd();
}
阅读响应流:
try
{
using (WebResponse response = request.GetResponse())
{
HttpWebResponse httpResponse = (HttpWebResponse)response;
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string result = reader.ReadToEnd();
if(result.StartsWith("NUMBER NOT IN LIST"))
{
return "Number Not In List";
}
return result;
}
else if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
{
return statusCode = HttpStatusCode.Unauthorized.ToString();
}
else if (httpResponse.StatusCode == HttpStatusCode.BadRequest)
{
return statusCode = HttpStatusCode.BadRequest.ToString();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.