我有代码发送HttpRequest并在字符串中获取json。代码工作正常,但它包含菱形和不可读的字符串服务器启动时sending tranfer-encoding chunked response
我试图使用缓冲区并将文本读入stringBuilder,但它不能正常工作。我在一些答案中读到HttpWebRequest已经过时,我应该使用HttpClient。我在HttpClient中重写了我的代码,但问题仍然存在。我在浏览器中打开网址,它工作正常,加载需要几秒钟,我没有看到转移编码Chunked。
请检查代码,
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
var client = new HttpClient(handler);
var ans = client.GetAsync(strURL).Result;
var resStream = ans.Content.ReadAsStringAsync().Result;
我已经应用了8192字节缓冲区并从SO读取,不能使用此代码并在过去几个小时内尝试了来自SO的许多代码。请检查我的代码中有什么问题。我可以在标题中设置一些简单的说不用分块的html或者有一种方法可以从响应中读取分块的html。
根据你的代码,返回的json不是字符串格式,它是字节数组?它与服务器端有关,服务器在发回之前是否对内容进行编码?对不起,我试图添加评论,但我的水平太低,我只能发布答案,希望我的一些想法可以帮助。
在我的项目,服务器端,我们使用下面的代码发送响应
public System.Net.Http.HttpResponseMessage GetServiceStatus()
{
......
string sJsonRet = JsonHelper.Serialize(rspMsg);
System.Net.Http.HttpResponseMessage resp = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK);
resp.Content = new System.Net.Http.StringContent(sText,System.Text.Encoding.UTF8, "text/plain");
return resp;
}
客户端,你总是得到纯文本字符串,我们使用System.Net.WebClient。
internal void GetServiceStatusCompleted(object sender, UploadStringCompletedEventArgs e){
......
string response = e.Result;
if ((response != null) && (response.Length > 0))
status = (ServiceStatusMsg)JsonHelper.Deserialize(typeof(ServiceStatusMsg), response);
}