我正在嘗試將帶有會話請求的 JSON 有效負載在 python 中發送到 PHP 服務器。會話本身已建立,服務器接受 cookie,但是當我列印出 時$_POST,它回傳一個空陣列。看起來負載沒有與請求一起發送,或者 PHP 可能無法識別它。
客戶端 - Python:
import json
import requests
url = 'https://prov.is.st.com/eventpost.php'
payload = {
'script': 'pyt.sh',
'status': 'Success'
}
s = requests.Session()
s.cookies.set('provisioning', cookie, domain='prov.is.st.com')
headers = {
'Content-Type': 'application/json'
}
s.headers.update(headers)
response = s.post(url, data=payload, verify=False)
print(response.text)
服務器端 - PHP:
<?php
print_r($_POST);
if(isset($_POST['status'])){
$status = $_POST['status'];
}
else{
$status=0;
}
if (isset($_POST['script'])) {
$script=$_POST['script'];
} else {
$script="unknown";
}
if (isset($_COOKIE['provisioning'])) {
$cookie=$_COOKIE['provisioning'];
print "OK: Message accepted: [$status][$script]\n";
}
else {
print "ERROR: NO cookie provided.\n";
}
輸出
Array
(
)
OK: Message accepted: [0][unknown]
uj5u.com熱心網友回復:
根據此處的檔案:https : //2.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests,為了發布 JSON 資料,您應該使用以下任一方式:
import json
...
response = s.post(url, data = json.dumps(payload), verify = False)
或者
...
response = s.post(url, json = payload, verify = False)
請注意,json如果傳遞了data或,則忽略該引數files。
使用json請求中的引數會將Content-Type標頭中的更改為application/json。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/403471.html
標籤:
