首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在WebClient 6中用HttpClient替换过时的HttpClient

如何在WebClient 6中用HttpClient替换过时的HttpClient
EN

Stack Overflow用户
提问于 2022-04-12 09:10:29
回答 2查看 160关注 0票数 0

由于WebClient在.NET 6中被废弃,使用WebClient将以下代码转换为使用HttpClient的等效代码的最佳解决方案是什么?

代码语言:javascript
运行
复制
byte[] data = Converter(...); // object to zipped json string

var client = new WebClient();
client.Headers.Add("Accept", "application/json");
client.Headers.Add("Content-Type", "application/json; charset=utf-8");
client.Headers.Add("Content-Encoding", "gzip");
client.Encoding = Encoding.UTF8;

byte[] response = webClient.UploadData("...url...", "POST", data);
string body = Encoding.UTF8.GetString(response);

这段代码可以工作,但只接受简单的json字符串作为输入:

代码语言:javascript
运行
复制
var request = new HttpRequestMessage()
{
    RequestUri = new Uri("...url..."),
    Version = HttpVersion.Version20,
    Method = HttpMethod.Post,
    Content = new StringContent("...json string...", Encoding.UTF8, "application/json");
};

var client = new HttpClient();
var response = client.SendAsync(request).Result;

我需要一个解决方案来发布一个拉链json字符串。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-04-12 09:40:06

不足为奇的是,您只发送了简单的字符串,因为您使用了StringContent,,它用于(鼓滚!)字符串内容。

那么,如果要以字节数组的形式发送二进制数据,怎么办?答案很简单:不要使用StringContent。相反,使用(鼓辊强化) 。

票数 0
EN

Stack Overflow用户

发布于 2022-04-16 07:51:30

为了添加内容类型,可以这样做:

代码语言:javascript
运行
复制
var content = new StringContent(payload, Encoding.UTF8);
content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json");

如果您想像对webclient那样添加标题:

代码语言:javascript
运行
复制
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

//OR 

var header = new KeyValuePair<string, string>(key: "Accept", value: "application/json");
client.DefaultRequestHeaders.Add(header.Key, header.Value));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71839969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档