1. ホーム
  2. php

[解決済み] PHP CURL DELETE リクエスト

2022-10-26 14:58:21

質問

PHPとcURLを使ってDELETE httpリクエストを行おうとしています。

私はそれを行う方法を多くの場所で読みましたが、何も私のために動作していないようです。

これは私がやっている方法です。

public function curl_req($path,$json,$req)
{
    $ch = curl_init($this->__url.$path);
    $data = json_encode($json);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $req);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data)));
    $result = curl_exec($ch);
    $result = json_decode($result);
    return $result;
}

次に、私の関数を使います。

public function deleteUser($extid)
{
    $path = "/rest/user/".$extid."/;token=".$this->__token;
    $result = $this->curl_req($path,"","DELETE");
    return $result;

}

これは私にHTTP内部サーバERRORを与えます。 GETとPOSTで同じcurl_reqメソッドを使用する私の他の関数では、すべてがうまくいきます。

では、私は何を間違えているのでしょうか?

どうすればいいのでしょうか?

私は最終的にこれを自分で解決しました。もし他の人がこの問題を抱えているなら、これが私の解決策です。

新しいメソッドを作りました。

public function curl_del($path)
{
    $url = $this->__url.$path;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
    $result = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    return $result;
}

アップデート2

HTTPレスポンスをJSONデコードされたオブジェクトで返す、私の最終的なcurl DELETEメソッドを紹介します。

  /**
 * @desc    Do a DELETE request with cURL
 *
 * @param   string $path   path that goes after the URL fx. "/user/login"
 * @param   array  $json   If you need to send some json with your request.
 *                         For me delete requests are always blank
 * @return  Obj    $result HTTP response from REST interface in JSON decoded.
 */
public function curl_del($path, $json = '')
{
    $url = $this->__url.$path;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    $result = json_decode($result);
    curl_close($ch);

    return $result;
}