Próbuję wykonać żądanie DELETE http przy użyciu PHP i cURL.
Czytałem, jak to zrobić w wielu miejscach, ale wydaje mi się, że nic nie działa.
Oto jak to robię:
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;
}
Następnie idę dalej i używam mojej funkcji:
public function deleteUser($extid)
{
$path = "/rest/user/".$extid."/;token=".$this->__token;
$result = $this->curl_req($path,"","DELETE");
return $result;
}
To daje mi błąd wewnętrznego serwera HTTP. W moich innych funkcjach używających tej samej metody curl_req z GET i POST wszystko idzie dobrze.
Więc co robię źle?
Odpowiedzi:
W końcu sam to rozwiązałem. Jeśli ktoś ma ten problem, oto moje rozwiązanie:
Stworzyłem nową metodę:
Zaktualizuj 2
Ponieważ wydaje się to pomagać niektórym osobom, oto moja ostateczna metoda curl DELETE, która zwraca odpowiedź HTTP w zdekodowanym obiekcie JSON:
źródło
Aby wywołać GET, POST, DELETE, PUT wszelkiego rodzaju żądania, stworzyłem jedną wspólną funkcję
źródło
Moje własne żądanie klasy z uwierzytelnianiem wsse
źródło
źródło
źródło
$json empty
znaczy? I tak nie jest objęty zakresem tej funkcji, więc użycie$json
nic nie da.