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

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

  

C# HttpClient 流式响应的更多相关文章

  1. Openresty的同步输出与流式响应

    Openresty的同步输出与流式响应 默认情况下, ngx.say和ngx.print都是异步输出的,先来看一个例子: location /test { content_by_lua_block { ...

  2. Django的视图流式响应机制

    Django的视图流式响应机制 Django的响应类型:一次性响应和流式响应. 一次性响应,顾名思义,将响应内容一次性反馈给用户.HttpResponse类及子类和JsonResponse类属于一次性 ...

  3. 飘城旅游网pc,流式,响应式布局

    相关视频教程http://pan.baidu.com/s/1o77wirK 我的源码链接:http://pan.baidu.com/s/1czTsKI

  4. ASP.NET Core Web API 流式返回,逐字显示

    Websocket.SSE(Server-Sent Events)和长轮询(Long Polling)都是用于网页和服务端通信的技术. Websocket是一种全双工通信协议,能够实现客户端和服务端之 ...

  5. 基于grpc的流式方式实现双向通讯(python)

    grpc介绍 grpc是谷歌开源的一套基于rpc实现的通讯框架(官网有更完整的定义).在搞懂grpc之前,首先要弄懂rpc是什么.下面是自己理解的rpc定义,若有不对,望指出: rpc官方称为 远程过 ...

  6. Go gRPC教程-服务端流式RPC(三)

    前言 上一篇介绍了简单模式RPC,当数据量大或者需要不断传输数据时候,我们应该使用流式RPC,它允许我们边处理边传输数据.本篇先介绍服务端流式RPC. 服务端流式RPC:客户端发送请求到服务器,拿到一 ...

  7. 打造自己的ChatGPT:逐字打印的流式处理

    接口的延迟 在调用OpenAI的接口时,不免会有很慢的感觉,抛去地理位置上的网络延迟,大量的延迟往往发生在响应生成的过程中. 因此,如果使用同步接口的话,需要等待响应完全生成之后才能最终显示输出结果, ...

  8. CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  9. 流式布局&固定宽度&响应式&rem

    我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法. 1.流式布局: ...

  10. 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC

    静态布局:给页面元素设置固定的宽度和高度,单位用px,当窗口缩小,会出现滚动条,拉动滚动条显示被遮挡内容.针对不同分辨率的手机端,分别写不同的样式文件.例如:浏览器窗口是1000px,那么最小的宽度是 ...

随机推荐

  1. php 超过64位进制和10进制的转换

    有时候想把一个很大的数尽量用更少的空间存储起来,那么就可以采用很大的进制来存储它,比如说,一个大于等于10小于等于16数字使用10进制就需要两位,使用16进制就只需要1位,那就等于帮程序省了一位的空间 ...

  2. ES6中 Json、String、Map、Object 之间的转换

    /** *字符串转json * */ static stringToJson(data){ return JSON.parse(data); } /** *json转字符串 */ static jso ...

  3. 从架构到成本,SQL Server 和 PostgreSQL 四大区别全方位解析!

    从架构到成本,SQL Server 和 PostgreSQL 四大区别全方位解析! 今天我想分享 SQL Server 和 PostgreSQL 之间的四大关键区别. 在比较 SQL Server 和 ...

  4. Java网络编程之JavaMail发送邮件和接受邮件

    JavaMail是API 是一个标准的Java扩展,它是J2EE的范畴,在J2EE开发过程中可能会需要用到这个API.在学习JavaMail之前,有必须要对现在的互联网的邮件协议进行有个大体的了解. ...

  5. 用OpenResty搭建高性能服务端

    相关链接:https://github.com/openresty/lua-nginx-module OpenResty 简介 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web ...

  6. DevEco Studio 实战第一节:字符串拼接与组件构建

    DevEco Studio 实战第一节:字符串拼接与组件构建 引言 在现代软件开发中,TypeScript 提供了强类型的优势,而 DevEco Studio 作为华为推出的开发集成环境,提供了便捷的 ...

  7. synchronized 关键字测试

    对象上有关键字 package com.study.juc.sync; import java.util.concurrent.TimeUnit; public class Test1 { publi ...

  8. C++之OpenCV入门到提高006:图像混合

    一.介绍 今天是这个系列<C++之 Opencv 入门到提高>的第六篇文章.这篇文章也不难,介绍如何图像的混合操作.图像本质上也是数据,既然是数据,我们就可以针对两张或者多张图片进行加.减 ...

  9. vmware ESXi快速创建新的虚拟机

    ​准备工作:新虚拟机Win10 安装后,需要windows update,更新补丁到最新,关机.(本文案例win10-Amadeus) 在数据盘新建Win10-Users文件夹(可自定义) 复制win ...

  10. DBeaver 不错大家都来用 DBeaver 吧

    支持 windows linux 支持 pg 等 n 多数据库