这个地方耗费的时间最多,早前一直定位不到问题所在。

server_url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token="+ ACCESS_TOKEN + "&media_id="+ media_id
response = urllib2.urlopen(server_url)
data = response .read()

由于access_token或者media_id出错,导致data是空的,上传七牛报错,误认为是上传七牛的问题。
后来发现可以通过http响应的报文头中可以检测请求图片数据是否成功。
响应报文头如下:

Connection: close
Content-Type: image/jpeg
Content-disposition: attachment; filename="MEDIA_ID.jpg"
Date: Sun, 06 Jan 2013 10:20:18 GMT
Content-Length: 339721

注意到”Content-Type“,如果请求不成功,返回的是text/plain;成功返回的是image/jpeg,通过这个检测请求是否成功。
然后可以进一步读错误信息:
response_data = json.loads(data )
result = response_data.get(“errmsg”)
错误信息是json类型,如果是图片数据不是json类型,故先要判断请求失败了才能如此处理。

错误信息主要有三种:
”invalid credential“:access_token错误或者过期
” invalid media_id “:media_id错误
”media_id missing“:media_id是空的

判断确认了图片获取成功之后才上传到七牛,进行后面的处理。

微信公众号开发:用从微信服务器下载图片资源相关推荐

  1. 微信公众号开发(一)服务器及接口的配置

    微信公众号开发(一)服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比 ...

  2. python微信公众号开发教程_python微信公众号开发简单流程实现

    本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样.真的无语了.只好自己总 ...

  3. 微信公众号开发之妙解服务器5s限制

    目录 框架选择 内网穿透 微信5s限制 客服回复? 公众平台web回复? msgId唯一! 总结 上年十二月份至今年三月份ChatGpt还是挺火的,很早就想做一个属于自己的微信问答机器人,但是觉得做了 ...

  4. 微信公众号开发系列-获取微信OpenID

    在微信开发时候在做消息接口交互的时候需要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID,接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获 ...

  5. 微信公众号开发+H5页面语音录入+下载+amr转换为MP3+讯飞语音转文字

    其实作为H5想要做语音识别,自认为还说有各种弊端得,同时还是微信公众号里面,如果小程序得话,或许会简单一点,但是这里是在公众号里面开发,在这个过程中查阅个各种资料,其实里面得东西都大同小异,但是大多数 ...

  6. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...

    本文档将对即将推出的微信公众帐号开发系列连载教程做简单的说明. 教程主要是面向有一定 Java 编程基础的朋友, 目录: 微信公众帐号开发教程第 1 篇-引言  2 微信公众帐号开发教程第 2 篇-微 ...

  7. 微信公众号开发之绑定微信开发者

    第一步:登录微信公众号,绑定网页开发者 在登录后的界面中,我们向下拉在左侧会看到有一个"开发者工具"点击. 这时在开发者工具中,会看到有好几个工具,其中有一个"web开发 ...

  8. 微信公众号开发,清除微信内置浏览器缓存

    在做微信开发的时候(主要是微信内网页或者比较大型的手机网站)的时候,更改了页面代码,但是微信内置浏览器有缓存,还是之前的效果,影响调试,而且还死活清除不掉!!!!!怎么办? 我的第一想法是关闭手机的微 ...

  9. php微信公众号开发入门,PHP微信公众号开发入门(二)

    好了,上一篇已经介绍到了如何成为一个微信开发者,并且简单介绍了如何获取和发送简单的文本信息,这次就来介绍一下其他类型数据的接收和发送方式. 我们可以通过微信端给我们发送来的xml来判断用户发送消息的类 ...

  10. JAVA微信公众号开发第11微信发红包

    #简介 现金红包,是微信支付商户平台提供的营销工具之一,上线以来深受广大商户与用户的喜爱.商户可以通过本平台向微信支付用户发放现金红包.用户领取红包后,资金到达用户微信支付零钱账户,和零钱包的其他资金 ...

最新文章

  1. Duilib技巧:背景图片平铺
  2. 安装nexus时遇到的一个问题
  3. pdf.js插件使用记录,在线打开pdf
  4. 第二十节,使用RNN网络拟合回声信号序列
  5. js获取谷歌浏览器版本
  6. 开发类似vs的界面_C#会不会成为移动开发最便捷的语言?
  7. VmPlayer 无法启动解决方法一例
  8. 全网首发C++ OBS源码分析与屏幕录制软件开发视频教程
  9. 敬业签电脑桌面便签软件怎么绑定手机号码?
  10. 华硕x450jn拆机_自己动手丨 轻松搞定华硕X450JN笔记本 内存扩展
  11. 程序员赚的辛苦钱及好朋友借钱[借钱时你是爷爷,借出去后丢一个朋友不说还多出一个爷爷]
  12. 高德地图:创建多个覆盖区域
  13. C#之字符串公式计算
  14. 2019python程序员月薪多少_最新 | 2019年Python工程师的平均薪资是多少?
  15. 屏幕录制编辑软件:Screenium 3 for Mac
  16. Flask-peewee-pyjwt实现简单的用户接口
  17. 火车头采集规则,火车头采集数据发布不小心设置了发布数量怎么修改?
  18. 什么是信道特性、信道测量、信道建模
  19. channelsftp 上传文件为空_文件上传踩坑记及文件清理原理探究
  20. 力特usb转串口线驱动 linux,力特USB转串口並口驱动

热门文章

  1. 考研数学 第6讲 中值定理
  2. 【软件教程】解决kali无法和windows实现复制黏贴互通
  3. Win10下Python3.x环境安装和配置教程
  4. HFSS仿真侧馈微带天线学习笔记
  5. Git 与 Github 基础一步入门
  6. 《AngularJS深度剖析与最佳实践》一1.4 实现第一个页面:注册
  7. 【第3章】局域网概述
  8. 基于以太坊的58同城 | DApp开发与应用案例
  9. Leetcode 1144
  10. 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法...