webQQ协议——获取好友消息

2014/06/29修改

修改成先json.loads(ret)再调用callback


2014/06/28修改

重写了代码=。=,,,


轮询消息的地址:http://d.web2.qq.com/channel/poll2

发送请求所用到的Form:

data = {
    r:{"ptwebqq":"ptwebqq_value", "clientid":"clientid_value", "psessionid":"psessionid_value", "key":""}
}

大致就上面那样, 里面的 ptwebqq, clientid, psessionid在模拟登录完成后都能得到; 模拟登录参考( webQQ协议——模拟登录)


下面是我写的一个轮询消息的模块

实例化类时要传入dict (dict由模拟登录模块登录成功后返回)

然后调用poll方法, 需传入1个函数用于处理返回的信息


PollMsg.py(Queryable模块在模拟登录的那篇文章中。。)


#coding=utf-8

import json;
import threading;
import urllib;
import urllib.request;
from urllib.parse import urlencode;
from Queryable import *;

URL_POLLMSG = "http://d.web2.qq.com/channel/poll2";

class PollMsg(Queryable):
    def __init__(self, dict):
        Queryable.__init__(self, dict);
        
    def poll(self, callback = None):
        pollMsg = threading.Thread(target = self._poll, args = (callback, ));
        pollMsg.start();
        
    def _poll(self, callback):
        while(1):
            request = urllib.request.Request(URL_POLLMSG, headers = self.queryInfo("header"));
            opener = self.queryInfo("opener");
            data = {"r":'{"ptwebqq":"' + self.queryInfo("ptwebqq") +  '","clientid":' + self.queryInfo("clientid") + ',"psessionid":"' + self.queryInfo("psessionid") + '","key":""}'};
            ret = json.loads(opener.open(request, urlencode(data).encode("utf-8")).read().decode("utf-8"));
            if(callback != None):
                callback(ret);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值