2015-07-03 117 views
0

我有这个数据,我将它转换为json,然后我使用数据作为参数调用Java API,但它不工作。Django:在params中使用json调用rest API不起作用

data = {"clientId": "CAxsRoZcH063XwCtHCVZItVq0Hga", "clientSecret": "ifs6nU9ZZQitOOqYr5Hy579sa28a", "username":"doctor1","password":"fistar"} 
json_data = json.dumps(data) 
user = requests.post(url='http://147.27.50.130:8080/EHR_SE/UserLogin', params=json_data) 

当我改变PARAMS到它的工作

user = requests.post(url='http://147.27.50.130:8080/EHR_SE/UserLogin', params="data=%7B%22clientId%22%3A%22CAxsRoZcH063XwCtHCVZItVq0Hga%22%2C%22clientSecret%22%3A%22ifs6nU9ZZQitOOqYr5Hy579sa28a%22%2C%22username%22%3A%22doctor1%22%2C%22password%22%3A%22fistar%22%7D") 

HTML字符串你有什么想法如何将这个JSON字符串转换为正确的格式?

澄清API正在接受json字符串。当我使用下面的代码从浏览器调用API时,它正在工作。

<form action="UserLogin" method="POST"> 
<input type='text' name='data' value='{"clientId":"CAxsRoZcH063XwCtHCVZItVq0Hga","clientSecret":"ifs6nU9ZZQitOOqYr5Hy579sa28a","username":"doctor1","password":"fistar"}'> 
<input type="submit" value="Identification"> 

谢谢先进!

+0

如果使用JSON我相信你想使用'数据= json_data'关键字参数为'request.post()'。 [相关文档](http://docs.python-requests.org/en/latest/user/quickstart/#more-complicated-post-requests) – IanAuld

回答

0

我找到了解决方案。

我应该在关键字中包含关键字data=

提出的解决方案是:

user = requests.post(url='http://147.27.50.130:8080/EHR_SE/UserLogin', params="data="+json_data) 
+0

这可能有效,但我认为你没有正确地使用它。它应该只是'requests.post(url ='http://147.27.50.130:8080/EHR_SE/UserLogin',data = json_data)' – IanAuld

+0

@IanAuld早些时候尝试过您的建议解决方案,但不幸的是没有工作。 – zinon