提问人:Andrew 提问时间:10/9/2023 最后编辑:Diego BorbaAndrew 更新时间:10/10/2023 访问量:78
Python 中的 Curl 命令
Curl command in Python
问:
我正在使用Python3.9。 我有以下 curl 命令:
curl -x proxy1.req:8080 --location --request POST 'https://auth.trst.com/2.0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'ct_id=33d3e1-4988-9a08-e7773634ba67' \
--data-urlencode 'ct_sec=56GgtoQA8.WIH9nFM3Eh3sT~cwH' \
--data-urlencode 'scope=https://auth.trst.com/settlement/.default' \
--data-urlencode 'grant_type=client_credentials'
返回的响应如下:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1355 100 1163 100 192 1340 221 --:--:-- --:--:-- --:--:-- 1566{"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrNHh5b2pORnVtMWtsMll0djhkbE5QNC1jNTdkTzZRR1RWQndhTmsiLCJ0eXAiOiJKV9SRSIsInNjcCI6ImRlZmF1bHQiLCJhenBhY3IiOiIxIiwic3ViIjoiZWI3OTU1OTktMzZhMy00SqQe5v9xuYRSfOb_gMgpt7Kez8B0dsnJ_SmT17Hbd7dXLS5p5xTva2iteHp80E2PBYy8jIdtDFcyyC3JSb_d1jzeRrtn5ILlR9eMiMMQa5k65rEXuWYlDpCCtyNS0vcbzA6raxuT1ux8-riCRnGe_TX-VP7FTzPxE7bN1N6N60Ahm7cvzmdDjtKgga0ltybKT2LKtT_hwIwYnuPOdYCGy5jYQ78kaZH86PVSXBuzHw","token_type":"Bearer","not_before":1696859605,"expires_in":3600,"expires_on":1696863205,"resource":"6f4cd1ba-556d-4cb3-ab69-12eac3243387"}
我想执行此命令并将令牌值存储在变量中,以便我可以将此变量用于进一步的逻辑,但不确定如何在 中执行此命令。curl
Python
Python
curl
Python
答:
2赞
Diego Borba
10/9/2023
#1
正如@AbdulNiyasPM所说:
curl 是一个旨在用作 CLI 的 HTTP 客户端。如果你想使用相同的功能,在 python 中使用像 requests 这样的库。
因此,您可以这样做:
import requests
# Request URL
url = 'https://auth.trst.com/2.0'
# Headers
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# Payload
payload = {
'ct_id': '33d3e1-4988-9a08-e7773634ba67',
'ct_sec': '56GgtoQA8.WIH9nFM3Eh3sT~cwH',
'scope': 'https://auth.trst.com/settlement/.default',
'grant_type': 'client_credentials'
}
# Proxy URL
proxy_url = 'http://proxy1.baag:8080'
# Make the request with the proxy
response = requests.post(url, headers=headers, data=payload, proxies={'http': proxy_url, 'https': proxy_url})
# Check if the request was successful (HTTP code 200)
if response.status_code == 200:
# Parse the JSON response to get the access token
response_data = response.json()
access_token = response_data.get('access_token')
# TODO: Use the access token as needed
else:
# TODO: Handle the error
评论
0赞
Andrew
10/9/2023
我最后刚刚尝试添加 print(response),但它没有打印令牌值并返回为 <Response [200]>
0赞
Diego Borba
10/9/2023
你应该使用,我把它添加到答案中。response.text
0赞
Andrew
10/9/2023
感谢它现在工作,但它的打印完整响应现在与我使用 curl 的问题中提到的一样。如果我只想将access_token的值存储在变量中,那是不可能的吗?因为我想在此代码的进一步逻辑中使用此变量值。
0赞
Diego Borba
10/9/2023
知道了,我已经改进了答案。
1赞
Helge Derenthal
10/9/2023
#2
使用 library 直接做,没有 curl:requests
import requests
url = "https://auth.trst.com/2.0"
headers = {"Content-Type":"application/x-www-form-urlencoded"}
data = {"ct_id": "33d3e1-4988-9a08-e7773634ba67",
"ct_sec": "56GgtoQA8.WIH9nFM3Eh3sT~cwH",
"scope": "https://auth.trst.com/settlement/.default",
"grant_type": "client_credentials"}
proxies = { "https" : "proxy1.baag:8080" }
r = requests.post(url, headers=headers, data=data proxies=proxies)
如果尚未安装 requests 库,请使用以下命令获取它:pip
python -m pip install requests
评论
requests
subprocess
subprocess