簡體   English   中英

帶有JSON響應的PHP Http Post請求:沒有有效的json

[英]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.

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