繁体   English   中英

HTTP Web请求发送两次(如何解决?)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM