11.20 python - Google Cloud Messaging (GCM) HTTP connection server.

原创 2015年11月20日 11:30:41

1.如何向app发送gcm推送?

https://developers.google.com/cloud-messaging/http
1.通过构造http请求,发送给https://gcm-http.googleapis.com/gcm/send
2.通过xmpp发送请求。

2.python如何发送请求?

http://www.findspace.name/easycoding/1137
http://www.01happy.com/python-httplib-get-and-post/

#Code1
#!/usr/bin/env python
#coding=utf8

import httplib, urllib

httpClient = None
try:
    params = urllib.urlencode({'name': 'tom', 'age': 22})
    headers = {"Content-type": "application/x-www-form-urlencoded"
                    , "Accept": "text/plain"}

    httpClient = httplib.HTTPConnection("localhost", 80, timeout=30)
    httpClient.request("POST", "/test.php", params, headers)

    response = httpClient.getresponse()
    print response.status
    print response.reason
    print response.read()
    print response.getheaders() #获取头信息
except Exception, e:
    print e
finally:
    if httpClient:
        httpClient.close()
#Code2
import urllib,urllib2

url = 'http://www.super-ping.com/ping.php?node='+node+'&ping=www.google.com'
        headers = { 'Host':'www.super-ping.com',
                    'Connection':'keep-alive',
                    'Cache-Control':'max-age=0',
                    'Accept': 'text/html, */*; q=0.01',
                    'X-Requested-With': 'XMLHttpRequest',
                    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
                    'DNT':'1',
                    'Referer': 'http://www.super-ping.com/?ping=www.google.com&locale=sc',
                    'Accept-Encoding': 'gzip, deflate, sdch',
                    'Accept-Language': 'zh-CN,zh;q=0.8,ja;q=0.6'
                    }
        data = None
        req = urllib2.Request(url, data, headers)
        response = urllib2.urlopen(req)
        compressedData = response.read()

3.发送推送

__author__ = 'george.yang'

#!/usr/bin/env python
#coding=utf8

import urllib,urllib2
import json

serverKey = 'AI?a?yB?WUe8?a69?liy??q??5????3?dq?FlQ?'
regId = 'APA91bG4?yViVl79O?rdB_?YnbA5UP?M_V?3a-5p3?t42??6a?z?-nM??SS??z?O??OIN-sAB?D?oVa?lq6d4Ym81Nt?NU3?GaA???1-Palvu?nnB???G??p???9???N3?-?3?Y?r?lL'

url = 'https://gcm-http.googleapis.com/gcm/send'
headers = {"Content-type": "application/json",
            "Authorization":"key="+serverKey
}

#send to one
# data = {'to': regId, 'data': {'name':'george'}}
#send to many
data = {'registration_ids': [regId], 'data': {'name':'george'}}
req = urllib2.Request(url, json.dumps(data), headers)

response = urllib2.urlopen(req)
print  response
compressedData = response.read()
print compressedData

data 的选择:
“Content-type”: “application/json”时使用: json.dumps(data)
“Content-type”: “application/x-www-form-urlencoded format”时使用:data = urllib.urlencode(data)
http://stackoverflow.com/questions/3893292/python-unhashable-type-error-in-urllib2

转载请注明出处:http://blog.csdn.net/u010499721

如果发送成功,打印:

<addinfourl at 45211720L whose fp = <socket._fileobject object at 0x0000000002AE3318>>
{"multicast_id":???16881?7?99971?8?,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1??79?9??0505061%9b36?1b2?9?d7?cd"}]}

如果http请求数据不符合,返回400

如果regiestId不存在,发送失败:
{“multicast_id”:???16881?7?99971?8?,”success”:0,”failure”:1,”canonical_ids”:0,”results”:[{“error”:”InvalidRegistration”}]}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Google Cloud Messaging (Android 消息推送技术) (二)

在shang http://blog.csdn.net/huangjialiang1986/article/details/8056221
  • yuxiaohui78
  • yuxiaohui78
  • 2014年11月24日 11:27
  • 3975

Google Cloud Message for Android(GCM云推送)(译文和开发流程)

Google Cloud Message for Android(GCM推送) google云推送服务允许你从自己的服务端发送数据到用户的Android设备,同时还可以接受来自同一链接发来的信息,GC...
  • u013045971
  • u013045971
  • 2014年10月24日 18:07
  • 3053

Google Cloud Messaging(GCM Google云推送)

8月不写博,9月徒伤悲,10月徒伤悲... ....。
  • change_from_now
  • change_from_now
  • 2014年09月30日 13:27
  • 3162

Google Cloud Messaging(GCM) for Android

1.手机端需要绑定邮箱,这个关键问题是所有使用推送的用户需要绑定一个gmail的邮箱, 2. GCM ACCOUNT_MISSING error,这个错误是在绑定邮箱后才好使 3. Mismatc...
  • blade2001
  • blade2001
  • 2012年11月27日 14:16
  • 3441

整合Firebase Cloud Messaging (FCM)到Eclipse工程

Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案,您可以使用它免费且可靠地传递消息和通知。(旧版 Google Cloud Messaging(GCM))。新...
  • yc0188
  • yc0188
  • 2016年08月01日 18:02
  • 5109

google cloud messaging(GCM)机制.

参考官方文档 https://developers.google.com/cloud-messaging/gcm#arch 什么是GCM ? gcm是google提供的一个免费sdk,可以实现客户端...
  • micaixiaoduanku
  • micaixiaoduanku
  • 2016年04月21日 17:36
  • 456

android: Google Cloud Messaging (GCM)

GCM是第二代的google message service, 第一代是c2dm。 目前c2dm已经相当于不能用了,因为它不在允许新的android注册和使用c2dm。 如何创建一个最简单的...
  • totogogo
  • totogogo
  • 2012年07月12日 19:03
  • 2880

GCM 的升级版——FCM(firebase cloud messaging)

推送服务对于现在的应用并不陌生,前有挡在墙外的GCM,和在墙内的Jpush,功能上大家大同小异,近几年大大小小的推送sdk层出不穷(比如:XG Push,华为推送,阿里云推送)到底哪个才能成为未来的官...
  • luciferVSme
  • luciferVSme
  • 2016年12月28日 16:49
  • 3789

Android 使用GCM(Google Cloud Messaging)推送消息

关于android实现推送方式解决方案我想大家已经不会觉得陌生了,如果大家有兴趣,可以了解以下四个解决方案: 1. C2DM(Android Cloud to Device Messageing...
  • lyq18245852216
  • lyq18245852216
  • 2015年08月18日 08:53
  • 250

GCM(谷歌云推送)客户端服务器端开发全指南(服务器篇)

今天我们按照之前所说的步骤介绍GCM云推送服务端的开发,因为服务端的开发比客户端的开发较简单,遵从由易到难,一步一步攻破的原则,所以我先于客户端讲服务端的开发,话不多说,让我们开始吧!首先我们依旧来到...
  • u011589986
  • u011589986
  • 2016年03月24日 12:34
  • 4664
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:11.20 python - Google Cloud Messaging (GCM) HTTP connection server.
举报原因:
原因补充:

(最多只允许输入30个字)