1

我对 Windows\ windows phone 设备 (8.1) 的 WNS 和推送通知有一个奇怪的问题。如果我发送推送通知,它工作得很好。问题是当我尝试向 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

现在我的疑问是:也许服务器不支持 HTTP 的 DELETE 方法?或者也许我需要为内容类型设置一些不同的东西?我遵循了 wns 文档:https ://msdn.microsoft.com/en-us/library/windows/apps/hh465435.aspx 我正在一个 azurewebsite (iis) 和另一个使用服务器 apache 2.2 的域上进行测试。 26

请求在带有 curl 的 php 中。谢谢你。

4

1 回答 1

1

我发现了问题。我无法将 MATCH 的内容类型发送到 WNS,因此我删除了该行:

curl_setopt($request,CURLOPT_POSTFIELDS, $template);

模板为空的地方,在此之后,我需要以这种方式传递内容长度(HTTP 所需):

$Header["ContentLength"] = "Content-Length : ".strlen($template);
curl_setopt($request,CURLOPT_HTTPHEADER, $Header);

现在的响应状态是 200 OK

不过谢谢,希望这可以帮助别人

于 2015-05-14T15:12:12.143 回答