[英]PHP Http Post request with json response: no valid json
如果我將以下請求發送到API,則表明我不使用有效的JSON字符串。 如何在有效的PHP發布請求中轉換JSON? 我在用食屍鬼:
$client = new Client();
$res = $client->request('POST', 'https://fghfgh', [
'auth' => ['user', 'pw']
]);
$res->getStatusCode();
$res->getHeader('application/json');
$res->getBody('{
"category": "ETW",
"date": "2017-03-02",
"address": {
"nation": "DE",
"street": "abc",
"house_number": "7",
"zip": "80637",
"town": "München"
},
"construction_year": "1932",
"living_area": "117.90",
"elevator": false,
"garages": false
}');
如文檔中所述
您需要按如下所示將所需的標頭傳遞給響應對象:
$res = $client->request('POST', 'https://fghfgh', [
'auth' => ['user', 'pw'],
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
]
]);
當我讓php解碼json時,它不會給出任何錯誤,因此首先想到的是慕尼黑的變音符號。 如果不使用變音符號嘗試此操作會怎樣?
話雖如此,我建議您使用PHP數組並將其編碼為json字符串,而不是僅輸入json字符串。 這是因為PHP可以檢查數組的語法,並且立即知道它是對還是錯。 如果選項A不起作用,則可能會解決您的問題。
它看起來像這樣:
$data = [
'category' => 'ETW',
'date' => '2017-03-02',
'address' => [
'nation' => 'DE',
'street' => 'abc',
'house_number' => 7,
'zip' => '80637',
'town' => 'Munchen'
],
'construction_year' => 1932,
'living_area' => '117.90',
'elevator' => false,
'garages' => false,
];
$res->getBody(json_encode($data));
在我看來就像您應使用json
的選擇,如果你的目的是張貼 JSON數據
$client->post('https://fghfgh', [
'auth' => ['user', 'pw'],
'json' => [
'category' => 'ETW',
'date' => '2017-03-02',
'address' => [
'nation' => 'DE',
'street' => 'abc',
'house_number' => '7',
'zip' => '80637',
'town' => 'München'
],
'construction_year' => '1932',
'living_area' => '117.90',
'elevator' => false,
'garages' => false,
]
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.