簡體   English   中英

linux curl和python請求之間的區別,為什么GET請求有不同的結果?

[英]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_code404 ,所以我無法獲得令牌。 為什么第一種方法有效而第二種無效?

另外,如何使第二種方法起作用?

謝謝!

因此,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM