Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用urllib2将数据发布到服务器?_Python - Fatal编程技术网

Python 如何使用urllib2将数据发布到服务器?

Python 如何使用urllib2将数据发布到服务器?,python,Python,我正在为python制作一个python twitch.tv API包装器,到目前为止,我已经: import urllib2 import json import time waittime = 1 baseurl = 'https://api.twitch.tv/kraken/' secret = '(CLASSIFIED)' class twitchchannelinfo(): #Ignore me ;D I'm Here for reference's sake def

我正在为python制作一个python twitch.tv API包装器,到目前为止,我已经:

import urllib2
import json
import time


waittime = 1
baseurl = 'https://api.twitch.tv/kraken/'
secret = '(CLASSIFIED)'


class twitchchannelinfo(): #Ignore me ;D I'm Here for reference's sake
    def __init__ (self,channel):
        self.channel = channel
        time.sleep(waittime)
        self.dict1 = json.loads(urllib2.urlopen(baseurl + 'channels/' + channel).read())

    def getstatus(self):
        return self.dict1 ['status']
    def getdisplay_name(self):
        return self.dict1 ['display_name']
    def getmature(self):
        return self.dict1 ['mature']
    def getchanurl(self):
        return self.dict1 ['url']
    def getcreated_at(self):
        return self.dict1 ['created_at']
    def getteams(self):
        return self.dict1 ['teams']
    def getgame(self):
        return self.dict1 ['game']
    def getupdated_at(self):
        return self.dict1 ['updated_at']

class twichtvwrapper():
    def __init__(self,username,password):        
        self.username = username
        self.password = password
        self.dict1 = json.loads(urllib2.urlopen(baseurl + 'oauth2/token',\
                        "client_id=<3kfp6al05voejvv7ofmpc94g4jga0tb>&\
                        client_secret=<" + secret + ">&\
                        username=<" + self.username + ">&\
                        password=<" + self.password + ">&\
                        scope=user_read&\
                        grant_type=password"))
        print self.dict1

me = twichtvwrapper('martincharles07','(CLASSIFIED)')


程序崩溃,出现异常
urllib2.HTTPError:HTTP Error 400:Bad Request
。我不知道我做错了什么,是因为行拆分还是urllib2的使用不正确?如何修复它?

请尝试以下操作,而不是将字符串连接在一起

body={'username':'someusername','password':'somepassword', ...}
txdata = urllib.urlencode(body)
要使用该方法,您必须使用
urllib
而不是
urllib2

这里有一个未经测试的片段

import json
import urllib
import urllib2

def wrapper(user, password, secret):

    data = {"client_id":"<3kfp6al05voejvv7ofmpc94g4jga0tb>",
            "client_secret":secret,
            "username":username,
            "password":password,
            "scope":"user_read",
            "grant_type":"password",
            }

    txdata = urllib.urlencode(data)
    response = urllib2.urlopen(baseurl + 'oauth2/token', txdata)
    return_data = json.loads(response.read())

    return return_data
导入json
导入URL库
导入urllib2
def包装(用户、密码、机密):
数据={“客户机id”:“”,
“客户机密”:机密,
“用户名”:用户名,
“密码”:密码,
“范围”:“用户读取”,
“授权类型”:“密码”,
}
txdata=urllib.urlencode(数据)
response=urllib2.urlopen(baseurl+'oauth2/token',txdata)
return_data=json.loads(response.read())
返回数据

我可以用urllib2实现这一点吗?@user76255是的,您可以继续使用urllib2。只需从urllib导入urlencode,然后使用urlencode即可。正如在评论中提到的,Requests模块相当不错。有关更多信息,请参阅。您是否尝试过。这更容易,而且文档也很好。@xxb谢谢。这太棒了。
import json
import urllib
import urllib2

def wrapper(user, password, secret):

    data = {"client_id":"<3kfp6al05voejvv7ofmpc94g4jga0tb>",
            "client_secret":secret,
            "username":username,
            "password":password,
            "scope":"user_read",
            "grant_type":"password",
            }

    txdata = urllib.urlencode(data)
    response = urllib2.urlopen(baseurl + 'oauth2/token', txdata)
    return_data = json.loads(response.read())

    return return_data