Estou tentando fazer uma solicitação DELETE http usando PHP e cURL.
Eu li como fazer isso em muitos lugares, mas nada parece funcionar para mim.
É assim que eu faço:
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;
}
Eu então sigo em frente e uso minha função:
public function deleteUser($extid)
{
$path = "/rest/user/".$extid."/;token=".$this->__token;
$result = $this->curl_req($path,"","DELETE");
return $result;
}
Isso me dá um erro de servidor interno HTTP. Em minhas outras funções usando o mesmo método curl_req com GET e POST, tudo vai bem.
Então, o que estou fazendo de errado?
Respostas:
Eu finalmente resolvi isso sozinho. Se alguém mais está tendo esse problema, aqui está minha solução:
Eu criei um novo método:
Atualização 2
Como isso parece ajudar algumas pessoas, aqui está meu método curl DELETE final, que retorna a resposta HTTP no objeto decodificado em JSON:
fonte
Para chamar GET, POST, DELETE, PUT, todo tipo de solicitação, criei uma função comum
fonte
Minha própria solicitação de classe com autenticação wsse
fonte
fonte
fonte
$json empty
significa aqui? Não está no escopo desta função de qualquer maneira, então o uso de$json
não fará nada.