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 = []; ...
随机推荐
- 力扣443(java)-压缩字符串(中等)
题目: 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始.对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中.否则,需要向 s ...
- 最佳实践:使用阿里云CDN加速OSS访问
简介: 用户直接访问OSS资源,访问速度会受到OSS的下行带宽以及Bucket地域的限制.如果通过CDN来访问OSS资源,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行 ...
- 从KPI到OKR,高阶产品人如何推动业务高速增长
简介: 不管是核心大目标,还是O(Objectives),或者北极星指标,奇妙等式等等,最后都需要核心组织协同方式来推动整个目标聚焦以及过程的落地. 作为产品经理人,相信很多人都遇到过以下的灵魂拷问: ...
- Flink 1.13,面向流批一体的运行时与 DataStream API 优化
简介: 在 1.13 中,针对流批一体的目标,Flink 优化了大规模作业调度以及批执行模式下网络 Shuffle 的性能,以及在 DataStream API 方面完善有限流作业的退出语义. 本文由 ...
- 基于 MaxCompute 的智能推荐解决方案
简介: 在互联网行业红利已过.在获客成本越来越高.在用户在线时长全网基本无增长以及信息大爆炸的情况下,如何更好的转化新用户和提升老用户粘性就变得至关重要,智能化的个性化推荐无疑是经过验证的重要手段之一 ...
- 浏览器扩展开发-Firefox临时载入附加组件(图)
科普:[FE] Quasar BEX 热加载区别: Chrome vs Firefox 1. 2. 3. Thats all. Refer:Firefox扩展开发 Link:https://www. ...
- [FAQ] JS 时间戳格式化为 date
拷贝使用,不用引入第三方库 function formatDate (date = 0, fmt = 'yyyy-MM-dd hh:mm:ss') { date = new Date(+date) i ...
- dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用
本文告诉大家如何在 UOS 国产系统上开始使用 MonoDevelop 开发,通过创建 GTK# 应用,进入界面开发的第一步 在开始之前需要小伙伴先安装好 MonoDevelop 工具 安装完成之后, ...
- 局域网内一部分网络设备无法ping通,icmp_seq=1 目标主机不可达
问题: 来自 192.168.2.99 icmp_seq=1 目标主机不可达. 最近想在局域网内搭建一台服务器,打开SSH服务后发现局域网内的一部分设备无法使用,尝试了各种办法都没能解决,重装系统 ...
- Multisim14.0安装步骤
免责声明:以下图片资源来源于Internet,作搜集学习之用. 此处,若只用到multisim仿真,可以只选择multisim 14.0 下面的education edition.