评论

【一次战斗的记录】C#调用微信临时素材接口出现41005

记录解决问题的过程

问题来源于今天的帖子,这位同学使用C#请求接口出现41005,(内心独白:他有点内向,不好意思问同事)

但是从来没写过C#,一头雾水,点了一杯茶百道,🤔ing

step1:安装环境

这里选择.NET 8.0,下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0

开始安装。。。过了几秒后安装完毕,打开控制台输入命令 dotnet,验证是否成功

step2: 打开VS Code

创建一个文件夹,打开它,控制台执行dotnet new console创建测试demo

step3: 各种网站搜索C#学习语法,http请求方法,表单上传文件,花费很多时间

找了一段代码,然后去测试号上生成access_token,又找个图片,开始测试,竟然翻车了,报错41005

这个问题会出现在哪呢?不慌,查下rid看看请求体,接口调用方式如下:

POST https://api.weixin.qq.com/cgi-bin/openapi/rid/get?access_token=ACCESS_TOKEN
获取到了下面的结果,看起来也没什么错误,现在开始挠头。。。 
"request_body":"--1b41388d-75c3-4752-b274-f6d25c2c8cbf\r\nContent-Disposition: form-data; name=media; filename=test.jpg; filename*=utf-8''test.jpg\r\n\r\n����"step4:  控制台输入dotnet run 运行查看结果,成功了std

step4: 找个能获取成功的代码打印请求头

细节省略。

此时茶百道见底,找到了猫腻,成功和不成功的,filename不一样,少个双引号,赶紧加上试试,果然成功了

运行结果截图:

示例代码:

using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;


class Program
{
    static async Task Main()
    {
        string filePath = "D:\\test.jpg";

        string uploadUrl = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=xxxx&type=image";

        using (var httpClient = new HttpClient())
        {
            using (var content = new MultipartFormDataContent())
            {
                content.Headers.ContentType = new MediaTypeHeaderValue("multipart/form-data");

                var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(filePath));
                
                // 关键代码 "\""
                content.Add(fileContent, "media", "\"" + Path.GetFileName(filePath) + "\"");

                var response = await httpClient.PostAsync(uploadUrl, content);

                var resultStr = await response.Content.ReadAsStringAsync();

                Console.WriteLine(resultStr);
            }
        }
    }
}


最后:希望这位同学能多学学,不要急着到点下班,不会排查问题可以虚心请教下同事。

听会music 告五人《从未见过的海》,我的JBL!我的充电宝!

最后一次编辑于  06-03  
点赞 2
收藏
评论

1 个评论

  • 启年
    启年
    06-03

    C#好啊,C#得学~

    茶百道是几分糖的

    06-03
    赞同
    回复
登录 后发表内容