0

我正在尝试使用httplib. 这是我的代码:

headers = {'User-agent': 'agent','Accept': 'application/json'}
params = { 'api_key':'kjdksnjd45555','ts':455555555}
data = {'job1':42,'job2':85}
params['data'] = json.dumps(data,separators =(',',':'))
re = requests.post(url,headers,params)
print re.json()   

当我使用请求时,它工作得很好,但当我使用时却不行httplib

params = urllib.urlencode(params)
con = httplib.HTTPConnection('api.sandbox.gengo.com')
con.request("POST", "/api/v", param, headers)
r2 = con.getresponse()
r2.read()

它返回以下错误:

"msg":"\\"api_key\\" is a required field"}  

(这意味着它无法恢复我的数据。)

我可以尝试什么?谢谢。

4

3 回答 3

0

看起来你在网上有一个错字:

con.request("POST", "/api/v", param, headers)

不应该params和不应该param。这可以解释为什么服务器响应丢失api_key

于 2013-09-23T00:49:57.337 回答
0

您的代码有两个错误。首先,您使用param而不是params在第三行中,而且您将参数作为请求正文而不是作为请求参数传递。

尝试下一个代码:

params = urllib.urlencode(params)
con = httplib.HTTPConnection('api.sandbox.gengo.com')
con.request("POST", "/api/v?" + params, "", headers)
r2 = con.getresponse()
r2.read()
于 2019-03-08T18:31:45.543 回答
0

HTTPConnection.request 的第三个参数不是 http 请求参数。它是 POST 请求正文。参数是 url 的一部分,应该这样发送。

https://docs.python.org/3/library/http.client.html?#http.client.HTTPConnection

于 2016-03-24T11:32:11.150 回答