C#.NET 微信上传电子小票
HttpWebRequest 时,不认图片的Content-Type。Content-Type 实际是有传的。
报错内容:{"code":"PARAM_ERROR","message":"电子小票图片类型必须是image/png或者image/jpg,请检查表单字段file中的Content-Type属性"}
后又换成 HttpClient,又报:
{"code":"SIGN_ERROR","detail":{"detail":{"issue":"sign not match"},"field":"signature","location":"authorization","sign_information":{"method":"POST","sign_message_length":98,"truncated_sign_message":"POST\n/v3/marketing/shopping-receipt/shoppingreceipts\n1664429854\n3f0ecffa77a440359db1b52279f81be1\n\n","url":"/v3/marketing/shopping-receipt/shoppingreceipts"}},"message":"错误的签名,验签失败"}
先用POSTMAN 调试,居然是通的。然后把URL的HTTPS 去掉,再用 Fiddler 抓包。Fiddler 抓包内容:
Content-Disposition: form-data; name="file"; filename="xp20220928173716.png"
Content-Type: image/png
和代码对比,Content-Disposition:和 form-data; 间有空格。form-data; 与 name 间有空格。 name="file"; 和 filename 间有空格。
照着改代码。
fileTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
之后就正常了。
fileTemplate 原始内容(无法上传的版本):
string fileTemplate = "Content-Disposition:form-data;name=\"{0}\";filename=\"{1}\"\r\nContent-Type:{2}\r\n\r\n";
END.
API 具体报错异常:
catch (WebException webEx2)
{
if (webEx2.Response != null)
{
HttpWebResponse hwr = webEx2.Response as HttpWebResponse;
string exRsp = string.Empty;
using (Stream stream = hwr.GetResponseStream())
{
StreamReader sr = new StreamReader(stream);
exRsp = sr.ReadToEnd();
}
//throw new Exception(exRsp);
MessageBox.Show(exRsp);
//return;
}
//throw webEx2;
}
要从 WebException 的message 中找。
图样说明:

name和filename 后边一定要有双引号,不然微信也接收不了。
C#.NET 微信上传电子小票的更多相关文章
- 微信上传图文消息invalid media_id hint,thumb_media_id怎么获取
微信上传图文消息thumb_media_id, thumb_media_id怎么获取, 微信群发图文消息invalid media_id hint, 微信群发图文消息40007, 40007,inva ...
- javascript jssdk微信上传一张图片的方法
javascript jssdk微信上传一张图片的方法 <pre> wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'co ...
- 企业微信上传 带中文名称的 临时素材资源 报错 44001:empty media data
错误原因:urllib3的老版本bug,卸载掉 requests,urllib3,从新安装最新版的requests(此包内部依赖urllib3): 我从新安装的是 requests==2.22.0 及 ...
- php实现调用微信上传照片然后保存至服务器与数据库
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <s ...
- 微信上传图文消息素材40007,invalid media_id hint
上传图文消息素材40007,invalid media_id hint,微信40007 >>>>>>>>>>>>>> ...
- PHP 5.6 微信上传临时素材的坑
/** * 上传素材 */ function add_material($url){ $access_token = wx_access_token(); $wx_url = "https: ...
- 【微信上传素材接口--永久性】微信永久性上传、获取返回的medie_id 和url
上传图片到微信服务器获得media_id和url (永久性) 其他接口类:https://www.cnblogs.com/gjw-hsf/p/7375261.html 转载地址:https://blo ...
- 微信上传素材 {"errcode":41005,"errmsg":"media data missing"} 解决方法和思路
哎lol 连跪两把 就来写写博客 今天遇到一个问题 ,微信公众号开发上传素材是提示报错 41005 errcode":41005,"errmsg":&q ...
- php 调用微信上传临时素材接口 {“errcode”:41005,”errmsg”:”media data missing hint”}
原因:由于PHP5.6以前与之后的版本curl_setopt有差异.PHP5.6以后不再支持”@文件路径”的方式. $picPath= "public\public\upload\xxx.p ...
- 微信上传文章素材—ASP.NET MVC从View层传数据到Controller层
View层: $('#btnNews').click(function() { if (!confirm('确定要提交吗?')) { return; } var frontViewData = []; ...
随机推荐
- 阿里云张献涛:自主最强DPU神龙的秘诀
简介:读懂云计算,才能看清DPU热潮. 微信公众号搜索"弹性计算百晓生",获取更多云计算知识. 如果细数最近火爆的科技概念,DPU必然位列其中. 这是英伟达一手捧红的新造富故事, ...
- [FAQ] uni-app 如何让页面不展示返回箭头图标
默认情况是,有历史上一页的 页面会在左上角展示返回图标. 比如登录页不想展示返回,在跳转进来时可以使用 uni.redirectTo({}),它能够关闭其它页面,这样当前页就不会有返回箭头了. Ref ...
- dotnet DirectX 通过 Vortice 控制台使用 ID2D1DeviceContext 绘制画面
在上一篇博客里面告诉大家,如何使用 Vortice 从零开始控制台创建 Direct2D1 窗口.上一篇博客采用的是 CreateDxgiSurfaceRenderTarget 的方式拿到了 ID2D ...
- kubenetes1.26中安装kubesphere3.4版本
一.安装前环境准备 # kubesphere官网:https://kubesphere.io/zh/docs/v3.4/introduction/what-is-kubesphere/ # 1.kub ...
- vue+element设置选择日期最大范围(优秀版)
element的选择日期组件里没有像移动端vant直接设置max-date的api,因此在不能动态设置选择的第二个时间(需要分别选择起止时间和结束时间,但可以加上关联), 看了很多博客有的效果直接出不 ...
- .Net项目部署到Docker
.Net项目部署到Docker 环境 linux docker .Net 7 步骤 编写Dockerfile 上传项目文件到linux 运行项目文件到docker 一.设置项目端口 在Program. ...
- Mybatis学习五($和#区别以及其他tips)
1.$和#区别 1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 ...
- 四:大数据架构回顾-IOTA架构
IOTA大数据架构是一种基于AI生态下的全新的数据架构模式,2018年,易观首次提出这一概念.IOTA的整体思路是设定标准数据模型,通过边缘计算技术把所有的计算过程分散在数据产生.计算和查询过程当中, ...
- docker-compose 配置LNMP环境
仓库地址: https://gitee.com/haima1004/docker-lnmp 参考文档: 视频地址: https://www.bilibili.com/video/BV1S54y1B7K ...
- docker-compose搭建的Mysql主从复制
设置前注意下面几点: 1)要保证同步服务期间之间的网络联通.即能相互ping通,能使用对方授权信息连接到对方数据库(防火墙开放3306端口). 2)关闭selinux. 3)同步前,双方数据库中需要同 ...