带有JSON请求主体的PHP PUT请求无法正常工作

时间:2019-12-16 00:59:09

标签: php rest api curl put

编辑:由于某种原因,该服务器需要标题'Accept: application/json'。当我添加它时,它工作正常。

我尝试了几种不同的方法来处理带有JSON请求正文的PUT请求。我总是收到一个错误消息,说他们没有收到数据。我不知道这是我的代码还是他们的服务器。这就是我现在所拥有的。另外,我尝试了curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');curl_setopt($curl, CURLOPT_POSTFIELDS, $data);的每种组合,但没有任何效果。

但是我在使用以下PHP发送完全相同的数据时遇到错误

$curl = curl_init();

$data = json_encode($data_array);

$headers = array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data));

$headers[]= 'Authorization: Basic '.AUTHENTICATION_TOKEN;


curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_URL, $url);

$result = curl_exec($curl);

1 个答案:

答案 0 :(得分:1)

使用curl_errno  为了获得特定的错误,如下所示:

$error_msg = NULL;
if (curl_errno($ch)) {
    $error_msg = curl_error($ch);
}
curl_close($ch);
if ($error_msg !== NULL) {
    print_r($error_msg);
}