PHP捲曲蟒蛇要求POST請求嵌套JSON
試圖讓POST請求的API訂購產品。看來,我無法弄清楚如何實際發送一個json-payload和post-request,以便API正確接收它。
該服務只提供了一個PHP的例子:
PHP-例如:
$params = array();
$params['access_token'] = '123abc';
$params['product_total'] = 2;
$params['product_list'] = array(
array(
'product_id' => 111
),
array(
'product_id' => 222
),
);
這是到目前爲止我Python代碼:
import requests
payload = {
"access_token": "123abc",
"product_total": 2,
"product_list":[
{
"product_id": 111,
...
},
{
"product_id": 222,
...
}]
}
r = requests.post(url, data=payload, verify=False)
r.text
> u'{"code":123,"msg":"product_id is empty"}'
所以什麼是錯的我發送方式product_list
。
我也試過:
import json
r = requests.post(url, data=json.dumps(payload), verify=False)
> u'{"code":456,"msg":"access_token is empty"}'
r = requests.post(url, json=json.dumps(payload), verify=False)
> u'{"code":456,"msg":"access_token is empty"}'
但比它無法讀取access_token
了。
我使用的是python 2.7.9
和requests 2.18.4
。
更新: 也沒有......
r = requests.post(url, json=payloal, verify=False)
> u'{"code":456,"msg":"access_token is empty"}'
更新2:
我在php-例如,我從API文檔有更深層次的看,我發現這一點:
curl_setopt($this->__ch, CURLOPT_URL, $apiUrl);
curl_setopt($this->__ch, CURLOPT_HEADER, 0);
curl_setopt($this->__ch, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT']);
curl_setopt($this->__ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->__ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->__ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($this->__ch, CURLOPT_POST, 1);
curl_setopt($this->__ch, CURLOPT_POSTFIELDS, http_build_query($this->__params));
也許有人可以發現一些東西在這一行,我是失蹤。
更新3:
我可以運行PHP的,例如沒有問題,並創造一個秩序的方式。但仍然不能用python來完成。
您是否嘗試過使用'json'參數而不是'data'?像'requests.post(url,json = payload,verify = False)' – masterfloda
@masterfloda,試過你的建議 - 仍然失敗 – RandomDude
把product_id值放在列表中怎麼辦?來自請求網站: payload = {'key1':'value1','key2':['value2','value3']} – SuperStew