Devo fare una richiesta PATCH utilizzando PhP cURL. Non sono riuscito a trovare alcuna documentazione, quindi ho provato quanto segue ma non funziona.Come posso fare una richiesta PATCH in PHP usando cURL?
$data = "{'field_name': 'field_value'}";
$url = "http://webservice.url";
$headers = array('X-HTTP-Method-Override: PATCH');
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
curl_close($curl);
Qualche idea sul perché questo non funziona? Come posso ripararlo?
Modifica: Mi collego a un servizio Web RESTful. Restituisce HTTP/1.1 200 per richieste riuscite. richieste senza successo ritorno HTTP/1.1 403. Continuo a ricevere 403.
Ho provato a cambiare $ dati:
$data = "data={'field_name': 'field_value'}";
E non ha cambiato il risultato.
Edit2: Il codice di lavoro finale.
$data = "{'field_name': 'field_value'}";
$url = "http://webservice.url";
$headers = array('Content-Type: application/json');
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
curl_close($curl);
Provare ['curl_error()'] (http://php.net/manual/en/function.curl-error.php). – jeremy
La richiesta va bene. curl_error è vuoto. –
Che dire di curl_setopt_array invece di curl_setopt per una maggiore semplicità? – masakielastic