使用HttpClient上传企业微信临时素材到ASP.NET Core 3.1 WebAPI
需积分: 49 166 浏览量
更新于2024-08-30
收藏 2KB TXT 举报
.NET Core 3.1 WebAPI 使用 HttpClient 上传企业微信临时素材
.NET Core 3.1 WebAPI 应用程序可以使用 HttpClient 库来上传企业微信临时素材。在本文中,我们将详细介绍如何使用 HttpClient 库上传企业微信临时素材,并返回 media_id。
首先,我们需要获取企业微信的 access token,这可以通过调用企业微信提供的 API 接口来实现。在本示例中,我们使用 `GetQYAccessToken()` 方法来获取 access token。
```csharp
var tokenResult = GetQYAccessToken().Result;
dynamic resultObj = JsonConvert.DeserializeObject(tokenResult);
```
接下来,我们需要构建上传请求的 URL,包括 access token 和文件类型。
```csharp
var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", resultObj.access_token, file.Name);
```
在上传文件之前,我们需要将文件流读取到 byte 数组中。
```csharp
var stream = file.OpenReadStream();
byte[] data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
stream.Close();
```
然后,我们需要构建.multipart/form-data 类型的请求内容。首先,我们需要生成一个随机的分隔线。
```csharp
var boundary = DateTime.Now.Ticks.ToString("X");
```
接下来,我们需要构建 MultipartFormDataContent 对象,并将文件内容添加到其中。
```csharp
var content = new MultipartFormDataContent(boundary);
content.Headers.Remove("Content-Type");
content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data;boundary=" + boundary);
HttpContent byteContent = new ByteArrayContent(data);
content.Add(byteContent);
byteContent.Headers.Remove("Content-Disposition");
byteContent.Headers.TryAddWithoutValidation("Content-Disposition", $"form-data;name=\"media\";filename=\"{file.Name}\"");
```
最后,我们可以使用 HttpClient 库将请求发送到企业微信服务器。
```csharp
var client = new HttpClient();
var response = await client.PostAsync(url, content);
```
在上传完成后,我们可以从响应结果中获取 media_id。
```csharp
var responseContent = await response.Content.ReadAsStringAsync();
dynamic responseObj = JsonConvert.DeserializeObject(responseContent);
var mediaId = responseObj.media_id;
```
使用 HttpClient 库上传企业微信临时素材可以分为以下几个步骤:获取 access token、构建上传请求 URL、读取文件流、构建 multipart/form-data 类型的请求内容、发送请求、获取 media_id。
2018-03-20 上传
2021-03-26 上传
2022-07-13 上传
2020-10-14 上传
2021-03-27 上传
2023-07-17 上传
weixin_39725436
- 粉丝: 0
- 资源: 2
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库