在python中将curl命令转换为http请求

时间:2016-05-30 16:42:45

标签: python django http curl

我是REST API的新手,我无法运行http请求。

如果我尝试curl命令,它可以通过终端工作:

curl \
 --request POST \
 --header "X-OpenAM-Username: user" \
 --header "X-OpenAM-Password: password" \
 --header "Content-Type: application/json" \
 --data "{}" \
 http://openam.sp.com:8095/openamSP/json/authenticate

结果:

{"tokenId":"AQIC5wM2LY4Sfczw67Mo6Mkzq-srfED3YO8GCSe0Be6wtPs.*AAJTSQACMDEAAlNLABM2NzQ5NjQ4Mjc0MDY0MzEwMDEyAAJTMQAA*","successUrl":"/openamSP/console"}

但是现在,从我在Django上的网页上我想提出一个请求而我无法使其工作,我使用它的代码是:

import requests
headers = {'X-OpenAM-Username':'user', 'X-OpenAM-Password':'password', 'Content-Type':'application/json'}
data = {}
r = requests.get('http://openam.sp.com:8095/openamSP/json/authenticate', headers=headers, params=data)

如果我检查答案:

u'{"code":405,"reason":"Method Not Allowed","message":"Method Not Allowed"}'

我做错了什么?我看不出我的错误在哪里。

谢谢和问候。

1 个答案:

答案 0 :(得分:3)

你正在做的一切正确,除了POST方法,只需这样做:

r = requests.post('http://openam.sp.com:8095/openamSP/json/authenticate', headers=headers, params=data)

URL接收的方法是POST方法而不是GET。