首页 > 解决方案 > 服务器违反了协议。Section=ResponseHeader Detail=CR 后面必须跟 C# Web API 项目中的 LF

问题描述

我正在使用 C# HttpClient 调用 GET Web 服务。但是,我遇到了这个InnerException :服务器违反了协议。Section=ResponseHeader Detail=CR 后面必须跟 LF in。

我也尝试过使用 WebClient,但它也有同样的问题。设置 useUnsafeHeaderParsing 的解决方案对我来说不是一个选项。

我使用 Fiddler 进行调试,它显示 200 个状态码和返回的数据。我对此的看法是,问题不在于请求,而在于 GetAsync 方法。

我无法在解决它方面取得任何进一步的进展。任何帮助将不胜感激。

using (HttpClient client = new HttpClient())
{
       var builder = new UriBuilder("http://url/abc/xyz?..");
       builder.Port = -1;
       var query = HttpUtility.ParseQueryString(builder.Query);
       query["param_1_key"] = "param_1";
       query["param_2_key"] = "param_2";
       query["param3_key"] = "param_3_value";
       builder.Query = query.ToString();
       string url = builder.ToString();

       client.BaseAddress = new Uri(url);
       client.DefaultRequestHeaders.Clear();
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


       var byteArray = Encoding.ASCII.GetBytes("username" + ":" + "password");
       var str = Convert.ToBase64String(byteArray);
       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

       response = client.GetAsync(builder.Uri.AbsoluteUri).Result;
}

标签: c#asp.netwebclientdotnet-httpclient

解决方案


推荐阅读