当前位置:首页 > IT专区 > 正文内容

Urllib2 替换 Pycurl

李欣12年前 (2014-06-01)IT专区192

调试百度云服务,给IOS手机推送消息,突然发现由于SAE不支持(据说bae也不支持)pycurl,所以原始sdk不能直接用。因此将替换方法记录下来。 官方貌似没有给出python的sdk,应该趁还在百度工作,给提提建议。遇到了些问题,参考php的sdk解决了。 1、pycurl不支持,使用urllib2替换 原始代码:RequestCore.py def handle_request(self): curl_handle = pycurl.Curl() # set default options. curl_handle.setopt(pycurl.URL, self.request_url) curl_handle.setopt(pycurl.REFERER, self.request_url) curl_handle.setopt(pycurl.USERAGENT, self.useragent) curl_handle.setopt(pycurl.TIMEOUT, 5184000) curl_handle.setopt(pycurl.CONNECTTIMEOUT, 120) curl_handle.setopt(pycurl.HEADER, True) #    curl_handle.setopt(pycurl.VERBOSE, 1) curl_handle.setopt(pycurl.FOLLOWLOCATION, 1) curl_handle.setopt(pycurl.MAXREDIRS, 5) if(self.request_headers and len(self.request_headers) > 0): tmplist = list() for(key, value) in self.request_headers.items(): tmplist.append(key + ':' + value) curl_handle.setopt(pycurl.HTTPHEADER, tmplist) #目前只需支持POST curl_handle.setopt(pycurl.HTTPPROXYTUNNEL, 1) curl_handle.setopt(pycurl.POSTFIELDS, self.request_body) response = StringIO.StringIO() curl_handle.setopt(pycurl.WRITEFUNCTION, response.write) curl_handle.perform() self.response_code = curl_handle.getinfo(curl_handle.HTTP_CODE) header_size = curl_handle.getinfo(curl_handle.HEADER_SIZE) resp_str = response.getvalue() self.response_headers = resp_str[0 : header_size] self.response_body = resp_str[header_size : ] response.close() curl_handle.close()   修改为: def handle_request(self): url = self.request_url headers = dict() headers['HTTP_REFERER'] = self.request_url request = urllib2.Request(url, self.request_body, headers) f = urllib2.urlopen(request) self.response_code = f.getcode() self.response_headers = f.info() self.response_body = f.read()   2、信息返回推送成功,手机却收不到 (1)据说的确有丢信息的几率,哎,百度怎么搞的 (2)需要在python的sdk中添加开发参数,从PHP的SDK中查看出来的: 在Channel.py中添加类变量 DEPLOY_STATUS = 'deploy_status' 发送demo c = Channel.Channel(apiKey, secretKey) push_type = 3 optional = dict() optional[Channel.Channel.MESSAGE_TYPE] = 1 optional[Channel.Channel.DEVICE_TYPE] = 4 optional[Channel.Channel.DEPLOY_STATUS] = 1 message = "{'title':'baidu push','description':'message from python sdk'}" message_key = "key1" ret = c.pushMessage(push_type, message, message_key, optional)   祝大家成功!

扫描二维码推送至手机访问。

版权声明:本文由心路历程发布,如需转载请注明出处。

本文链接:https://zblog.xinlulicheng.net/?id=119

分享给朋友:

“Urllib2 替换 Pycurl” 的相关文章

WordPress可视化文字空白

WordPress可视化文字空白

刚开始使用wordpress,遇到很多问题,好在自己做过php的开发,不算是小白级别的用户吧。记录一个升级造成的问题。 我下载使用的版本是3.9,看到有提示更新到3.9.1就直接更新了,然后发现写文章的时候可视化中写字无法显示了,用鼠标拖拽貌似文字的确存在。尝试了一些后台配置的方法无果,通过恢复升...

创业公司的CTO如果做不到这些就该辞职!

创业公司的CTO如果做不到这些就该辞职!

转载:http://www.cyzone.cn/a/20131001/245862.html 【导读】CTO要让技术团队明白,公司不是请你来搞纯技术研发的,个别人可以纯技术导向,但整个团队的目标是用技术能力实现某个特 性的产品,为用户和客户创造价值。如果做出的产品很粗糙,经不起用户的检验,总有一堆...

体验产品陌陌、秘密

体验产品陌陌、秘密

为了更好的体验手机APP,最近安装了了个陌陌和秘密,口碑上都是有特殊需求的。 总体感受:我不太喜欢用哇,感觉没什么意思。 1、陌陌:由于没有加任何好友,也就是体验了下信息查看的功能,看看附近有哪些奇奇怪怪的人。无聊哇。 2、秘密:比陌陌稍微好一点点,能看到的信息多一些,不过大多都是负面新闻,什...

问题分析与解决笔记

问题分析与解决笔记

领导者的四个作用:1、深入现场,了解事实,情景分析(是什么)2、发现问题,根因/真因,原因分析(为什么)3、解决问题,选择/创造,决策制定(做什么)4、落实方案,执行/赶紧,计划分析(怎么做)一、情景分析1、条件:复杂/情况不明2、流程:(1)笼统的问题(2)细化 单一化/具体化(5w+1h wha...

小白搭建Java环境之Mac篇

小白搭建Java环境之Mac篇

一、安装GIT和IDE 1、既然是小白,那么就直接XCODE吧,Git等直接都装好了,可惜要耗费大概10GB空间 2、剩下的IDEA和MyEclipse那就看大家心情了 二、本机搭建JAVA环境: 1.安装JAVA JDK 地址:http://www.oracle.com/techne...

阿里云机器配置免费的https

阿里云机器配置免费的https

    之前自己生成的https证书,使用nginx配置之后,发现静态文件会存在问题。最近又想起来这个事情,通过百度,了解到原来阿里云平台可以申请ca证书,配置后好用。心情无比激动,将方法分享出来,也感谢之前分享的广大网友前辈!     一、获取证书...