У меня странная проблема с WNS и Push Notification для устройств Windows \ Windows Phone (8.1).
Если я отправляю push-уведомление, оно работает хорошо.
Проблема заключается в том, что я пытаюсь отправить в WNS запрос X-WNS-Match.
Я отправляю текущий заголовок:
DELETE /?token=<CHANNEL>
HTTP/1.1
Host: db3.notify.windows.com
Accept: */*
Authorization: Bearer <TOKEN>
content-type: text/xml
X-WNS-Match: type=wns/toast;all
Content-Length: 0
Ответ от сервиса:
HTTP/1.1 400 Bad Request
Content-Length: 0
X-WNS-STATUS: dropped
X-WNS-ERROR-DESCRIPTION: Content type not supported
X-WNS-MSG-ID: C51E1A17972EA7A
X-WNS-DEBUG-TRACE: DB3WNS2011131
Strict-Transport-Security: max-age=31536000; includeSubDomains
Date: Wed, 13 May 2015 21:05:06 GMT
Я также попытался установить в заголовке запроса:
X-WNS-Type: wns/toast
Теперь я сомневаюсь: может, это сервер, который не поддерживает метод DELETE для HTTP? Или, может быть, мне нужно установить что-то другое для типа контента?
Я следовал за документацией wns: https://msdn.microsoft.com/en-us/library/windows/apps/hh465435.aspx
Я тестирую на сайте Azure (IIS) и в другом домене с сервером Apache 2.2.26
Запросы в php с curl.
Спасибо.
Я нашел проблему.
Я не могу отправить тип содержимого для MATCH в WNS, поэтому я удалил строку:
curl_setopt($request,CURLOPT_POSTFIELDS, $template);
Где шаблон был пуст,
После этого мне нужно передать длину содержимого (это требуется для HTTP) следующим образом:
$Header["ContentLength"] = "Content-Length : ".strlen($template);
curl_setopt($request,CURLOPT_HTTPHEADER, $Header);
И статус ответа сейчас 200 ОК
Спасибо, однако, надеюсь, что это может помочь кому-то
Других решений пока нет …