我不确定您所说的“有效负载”是什么意思,但可能它只是另一个名为payload的表单变量。如果是这样的话,那么发送它的方式与处理任何其他表单变量的方式相同,并且已经发送了一个bunch-roomId,t,等等
发送表单变量的一种方法是通过URL对它们进行编码,将它们附加到查询字符串中,然后发送一个GET请求。你现在就是这么做的。(最好使用正确的urllib方法,而不是将其与字符串连接一起使用,但最终结果是相同的。)
另一种方法是发送一个POST-body。^{} documentation解释了如何做到这一点,网上有很多很好的例子,但基本上你所要做的就是对你的名称-值对调用urllib.urlencode(),然后将结果作为第二个参数(或作为名为data)的关键字参数传递给open调用。在
换句话说,是这样的:data = self.opener.open("http://chat2-1.wikia.com:80/socket.io/1/xhr-polling/" + xhr_polling,
urllib.urlencode(("name", "HairyBot"),
("key", settings['chatkey']),
("roomId", str(settings['room']),
("key", settings['chatkey']),
("t", timestamp()),
("payload", payload)))
或者,如果您愿意,大多数服务器都允许您在查询字符串上发送一些参数,在POST数据中发送其他参数,这样您就可以不使用现有代码,只需进行一次更改:
^{pr2}$