Я пытаюсь обновить регистрацию HUB-уведомлений с PHP. Здесь они показывают, как отправлять уведомления с PHP: http://azure.microsoft.com/en-us/documentation/articles/notification-hubs-php-backend-how-to/
И я попытался адаптировать код таким образом, чтобы использовать другие методы API: https://msdn.microsoft.com/en-us/library/azure/dn223262.aspx
public function updateRegistration($registrationId) { # build uri $uri = $this->endpoint . $this->hubPath . "/registrations/" . $registrationId . NotificationHub::API_VERSION; $ch = curl_init($uri); $contentType = "application/atom+xml;type=entry;charset=utf-8"; $token = $this->generateSasToken($uri); $headers = [ 'Authorization: '.$token, 'Content-Type: '.$contentType, 'x-ms-version: 2013-08', 'If-Match: update' ]; curl_setopt_array($ch, array( CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => '<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://www.w3.org/2005/Atom"> <content type="application/xml"> <WindowsRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect"> <Tags>myTag, myOtherTag</Tags> </WindowsRegistrationDescription> </content> </entry>' )); // Send the request $response = curl_exec($ch); // Check for errors if($response === FALSE){ throw new Exception(curl_error($ch)); } $info = curl_getinfo($ch); if ($info['http_code'] <> 201) { throw new Exception('Error :'. $info['http_code'] . ' msg: ' . $response); } }
Но я получаю эту ошибку:
"Ошибка: 405 msg: 405
Указанный HTTP-глагол (POST) недействителен."
Что я делаю неправильно?
Благодаря!
Согласно документации, он принимает только PUT
.
Таким образом, код должен быть:
curl_setopt_array($ch, array( CURLOPT_CUSTOMREQUEST => 'PUT', // add this line CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => '<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://www.w3.org/2005/Atom"> <content type="application/xml"> <WindowsRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect"> <Tags>myTag, myOtherTag</Tags> </WindowsRegistrationDescription> </content> </entry>' ));