curl-d到Alamofire
在这个页面( https://django-oauth-toolkit.readthedocs.org/en/latest/rest-framework/getting_started.html )之后,我能够为我的django项目设置OAuth。
下面的curl命令给我一个令牌来访问资源。
curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" -u"<client_id>:<client_secret>" http://localhost:8000/o/token/
但是,当我使用Alamofire发送请求时,事情有点奇怪。 这是我的代码
Alamofire.request(.POST, url, parameters: parameters, encoding: .JSON) .authenticate(user: client_ID, password: client_Secret)
where参数是一个字典
[ "password": <password>, "grant_type": password, "username": <username> ]
使用curl命令,我可以从Django看到request.POST.items()返回参数列表。 但是,使用Alamofire,没有什么。 参数出现在request.body中!
这个问题让我疯狂。 任何帮助将不胜感激!
提前致谢。
那么,你的curl命令是以Content-Type: application/x-www-form-urlencoded
格式发布的,而你强制发布为json( .JSON
)。 因为这个原因,这个请求已经作为application/json
传递给了你的django,而你正在看到的是body而不是POST.items()
的参数。
所以删除你的代码encoding: .JSON
。