C# HttpClient 流式响应
有些时候需要边请求边显示响应内容:
用httpClient.SendAsync(httpreq, HttpCompletionOption.ResponseHeadersRead);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | private async void TestHttp() { DateTime d = DateTime.Now; HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add( "User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58" ); httpClient.DefaultRequestHeaders.Add( "Origin" , "https://xxxx.com" ); httpClient.DefaultRequestHeaders.Add( "Referer" , "https://xxxxx.com/" ); StringContent jsonContent = new StringContent( JsonConvert.SerializeObject( new { data= "你们的发货地是哪里?" , userId = "1211334" , title = "test" , usesyy = false }), Encoding.UTF8, "application/json" ); var httpreq = new HttpRequestMessage(HttpMethod.Post, "https://xxxxxx" ) { Content = jsonContent }; var response = await httpClient.SendAsync(httpreq, HttpCompletionOption.ResponseHeadersRead); //var response = await httpClient.PostAsync("https://api.xxxxx", jsonContent); // 确保请求成功 //response.EnsureSuccessStatusCode(); string allStr = "" ; // 读取响应内容的异步流 using ( var responseStream = await response.Content.ReadAsStreamAsync()) { Debug.Print( "============start response use minseconds=" + (DateTime.Now - d).TotalMilliseconds + " =================\r\n" ); // 逐块读取并处理响应内容 var buffer = new byte [102]; int bytesRead; while ((bytesRead = await responseStream.ReadAsync(buffer, 0, buffer.Length)) > 0) { // 处理响应内容 string content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); allStr += content; Debug.Print( "---------------" + content + "\r\n" ); } } var useTime = (DateTime.Now - d).TotalMilliseconds; var t2 = (DateTime.Now - DateTime.Now.AddMilliseconds(-100)).TotalMilliseconds; TestHttp(); } |
fffffffffffffffff
test red font.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构