为什么我的curl命令工作而不是我的python代码?

时间:2018-04-10 20:44:01

标签: python http curl

我有一个完全正常的curl命令

curl -X POST "https://api.optconnect.com/summit/beta/accounts/login/app_secret" -H  "accept: application/json" -H  "content-type: application/json" -d "{  \"accountId\": 000,  \"applicationId\": 000,  \"secret\": \"000\"}"

但是我的python代码给了我一个错误的请求错误

import urllib2
import json

url = 'https://api.optconnect.com/summit/beta/accounts/login/app_secret'

data = {'accountId': '000',
    'applicationId': '000',
    'secret': '000'}
data =json.dumps(data)

headers = {'accept': 'application/json', 'content-type': 'application/json' }


requestt = urllib2.Request(url, data ,headers)
response = urllib2.urlopen(requestt)
result = response.read()
print(result) 
  

文件“testing.py”,第19行,in       response = urllib2.urlopen(requestt)     文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第154行,在urlopen中       return opener.open(url,data,timeout)     文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第437行,公开       response = meth(req,response)     在http_response中输入文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第550行       'http',请求,响应,代码,消息,hdrs)     文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第475行,出错       return self._call_chain(* args)     文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第409行,在_call_chain中       result = func(* args)     在http_error_default中输入文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py”,第558行       提出HTTPError(req.get_full_url(),code,msg,hdrs,fp)   urllib2.HTTPError:HTTP错误400:错误请求

我错过了什么?

1 个答案:

答案 0 :(得分:1)

curl JSON中,accountIdapplicationId的值是整数,而不是字符串。这可能会对应用程序产生影响。所以使用:

data = {'accountId': 0,
        'applicationId': 0,
        'secret': '000'}