首页 > 编程语言 >C# HttpClient 流式响应

C# HttpClient 流式响应

时间:2023-07-02 11:33:39浏览次数:45  
标签:Now C# 流式 DateTime var new HttpClient response httpClient

有些时候需要边请求边显示响应内容:

用httpClient.SendAsync(httpreq, HttpCompletionOption.ResponseHeadersRead);

 

 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();
        }

  

标签:Now,C#,流式,DateTime,var,new,HttpClient,response,httpClient
From: https://www.cnblogs.com/wgscd/p/17520540.html

相关文章

  • Cocos Creator开发之MVC模式初探
    设计模式是用来实现软件设计进行分工的。设计模式应该是小巧的,对具体问题提出解决方案,以提高代码复用率,提高代码耦合性。CocosCreator中引入MVC模式的主要目的是:为了帮助CocosCreator开发者脱离拖拽脚本导致的后期维护方面带来的困难。一、基本的MVC模式组成控制器(Controller)-负......
  • 7月CF杂题
    怎么七月了?六月的只写了一道题捏。EducationalCodeforcesRound151(RatedforDiv.2)俺寻思能行。D.RatingSystem为什么大家都切那么快捏。显然\(k\)一定是\(a\)数组的一个前缀和。假设\(k=\sum\limits_{i=1}^xa_i\),剩下的等价于处理初值为0且\(k=0\)的子问......
  • SpringCloud学习(四)
    参考:https://blog.csdn.net/qq_25928447/article/details/124340264?spm=1001.2014.3001.5501消息队列之前如果需要进行远程调用,一般可以通过发送HTTP请求来完成,现在,可以使用第二种方式,就是消息队列,它能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处理......
  • tpcc客户端编译调试
    【代码地址】https://www.postgresql.org/message-id/CAGBW59f9q2Y4v-B3D8gje3xUsWz2Z-WaK9wYx4%3DhCY1zN%3D7%2BBQ%40mail.gmail.com【修改之后】根目录ant编译【执行】 【代码主要逻辑】 【客户端执行代码】......
  • 验证码生成技术的学习总结(C#)
    作者:光脚丫思考 一、概述一直以来对于验证码这玩意都是使用了别人编写好的代码,最多也就是稍微的做点修改罢了。虽然别人做的东西并不是非常的适合自己使用,但还是给将就将就了一番。这几天呢?不知道是哪里高兴了,终于是好好的把一些别人早就已经使用过的验证码技术给好好的拿来学习学......
  • 用C#访问Hotmail
    POP邮件协议的优点在于它是一个开放的标准,有着完善的文档,这就使得编写POP邮件客户程序不那么困难,只要掌握了POP、SMTP的基础知识,就可以写出代理程序来执行各种任务,例如过滤广告和垃圾邮件,或提供e-mail自动应答服务。Hotmail是世界上影响最广的Web邮件系统,遗憾的是,当我们要为Hotma......
  • 使用C#发送邮件
    最近有用户提出了一个新的需求,希望公司的ERP系统在交易申请书被批准以后自动发邮件到相关人员的邮箱中,让他们能第一时间知道。因为他们不想多打一次电话,也不愿意每天都开着ERP,但是他们的Outlook能每5分钟自动扫描一次新邮件跳出提醒。用户的需求并不过分,所以我就接下来了。在VS2003......
  • [MEF]第05篇 MEF的目录(Catalog)筛选
    一、演示概述本示例演示如何使用MEF提供的目录(Catalog)的扩展机制实现可过滤导出部件的自定义目录类。主要是通过继承ComposablePartCatalog基类,并实现接口INotifyComposablePartCatalogChanged来完成的。相关下载(屏幕录像):http://yunpan.cn/cVkvuUNfuDtTX 访问密码567d......
  • 光脚丫学ASP.NET MVC(0001):创建ASP.NET MVC应用程序项目
    演示视频:http://u.115.com/file/cloa5hpg本演示介绍了如何使用VisualStudio2010创建ASP.NETMVC应用程序项目。下面是VS的新建项目对话框。其中红色线圈住的两个模板是VS2010安装时就自带的ASP.NETMVC2的项目模板,可以从官方网站下载最新的项目模板。下图是新建单元测试项目对话......
  • [WPF]静态资源(StaticResource)和动态资源(DynamicResource)
    一、文章概述本演示介绍了WPF的静态资源和动态资源的基本使用,并对两者做了简单的比较。静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了;动态资源(DynamicResource)使用指的是在程序运行过程中然会去访问资源。相关下载(代码、屏幕录像):h......