使用HttpClient上传企业微信临时素材到ASP.NET Core 3.1 WebAPI

需积分: 49 29 下载量 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。