PhP cURLを使用してPATCHリクエストを作成する必要があります。私はドキュメントを見つけることができませんでしたので、私は次のように試みましたが、うまくいきません。cURLを使用してPHPでPATCHリクエストを作成するにはどうすればよいですか?
$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);
これはなぜ機能しないのでしょうか?どうすれば修正できますか?
編集: 私はRESTful Webサービスに接続しています。正常な要求に対してはHTTP/1.1 200を返します。それは結果を変更しませんでした
$data = "data={'field_name': 'field_value'}";
:失敗した要求が、私は403
を得続けるHTTP/1.1 403を返す私はに$データを変更しようとしました。
Edit2: 最終的な作業コード。
$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);
[curl_error()]](http://php.net/manual/en/function.curl-error.php)を試してください。 – jeremy
リクエストは正常に処理されます。 curl_errorは空です。 –
もっとシンプルにするために、curl_setoptではなくcurl_setopt_arrayについて教えてください。 – masakielastic