[英]Difference between linux curl and python requests, why GET request has different result?
為什么接下來兩種獲取身份驗證令牌的方法不相同? 第一個是在終端中使用curl
:
curl -X POST "http://myurl.com" -d "grant_type=password&username=me&password=mypass&client_secret=123&client_id=456"
該請求成功返回令牌。 如果我將請求庫用於python:
import requests
url = 'http://myurl.com'
query_args = { "grant_type":"password",
"username":'me',
"password":'mypass',
"client_secret":'123',
'client_id':'456'}
r = requests.get(url, data=query_args)
我得到的結果是r.status_code
是404
,所以我無法獲得令牌。 為什么第一種方法有效而第二種無效?
另外,如何使第二種方法起作用?
謝謝!
因此,curl -d
標志從手冊頁將數據作為發布數據發送:
-d/--data <data>
(HTTP)將POST請求中的指定數據發送到HTTP服務器,就像用戶填寫HTML表單並按Submit按鈕時瀏覽器所做的一樣。 這將導致curl使用內容類型application / x-www-form-urlencoded將數據傳遞到服務器。 比較-F /-形式。
因此,您應該使用request.post
。 您可能還想使用params屬性而不是data,請參見以下示例:
>>> data = {'test':'12345'}
>>> url = 'http://myurl.com'
>>> r = requests.post(url,params=data)
>>> print r.url
http://myurl.com/?test=12345
>>> r = requests.post(url,data=data)
>>> print r.url
http://myurl.com/
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.