1

我正在尝试通过我们的 Java 后端服务注册我的 Windows 通用应用程序以获取来自 Azure 通知中心的通知。

当它在我的 Windows Phone 设备上运行时,我从 Visual Studio 调试了该应用程序。该应用程序可以正确获取 ChannelUri 并将其传递给我们的 Java 后端。(我在本地 PC 上运行后端。)

Java 后端生成了以下模板注册请求,并尝试将其发送到 Azure REST Api:

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
   <content type="application/xml">
      <WindowsTemplateRegistrationDescription xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
         <Tags>Windows,10204394042027091,broadcast</Tags>
         <ChannelUri>https://db3.notify.windows.com/?token=AwYAAABXiUp%2bD8v1%2bVfWbWLr3FZ3rQcJtPkUgFwaiGZus4GbtkM8zbZ6uQt1NKXpC4FOtYWHDxXvBb3FkoefaozvCYTFiDjhdb3jDuORUDY8zBlkGw1MxY0QjrH7G0fFbW0RXgo%3d</ChannelUri>
         <BodyTemplate><![CDATA[{...}]]></BodyTemplate>
         <WNSHeaders>
            <WNSHeader>
               <Header>X-WNS-Type</Header>
               <Value>wns/raw</Value>
            </WNSHeader>
         </WNSHeaders>
         <TemplateName>geoinfo</TemplateName>
      </WindowsTemplateRegistrationDescription>
   </content>
</entry>

在我看来,这是根据 MS Azure REST 参考:http: //msdn.microsoft.com/en-us/library/azure/dn223265.aspx

尽管如此,响应仍包含以下错误:

<Error><Code>400</Code><Detail>The specified resource description is invalid..TrackingId:4ffaabcc-c7f8-4a6c-ab2f-4f65e94427df_G16,TimeStamp:10/21/2014 9:42:52 PM</Detail></Error>

关于 Azure 的问题在这里有什么想法?

4

2 回答 2

1

尝试这个:

  1. 呼叫创建注册 ID
  2. 将检索到的 id 存储在您的数据库中
  3. 调用Create 或 Update Registration来创建注册
  4. 以后每次您想更新该注册(刷新频道、修改标签...)时,您只需再次调用 Create 或 Update Registration

我刚刚成功地使用了下面的有效载荷:

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <title type="text"></title>
  <updated>2014-10-21T23:57:08Z</updated>
  <content type="application/atom+xml;type=entry;charset=utf-8">
    <WindowsTemplateRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
      <Tags>t1,t2</Tags>
      <ChannelUri>https://db3.notify.windows.com/?token=AwYAAABXiUp%2bD8v1%2bVfWbWLr3FZ3rQcJtPkUgFwaiGZus4GbtkM8zbZ6uQt1NKXpC4FOtYWHDxXvBb3FkoefaozvCYTFiDjhdb3jDuORUDY8zBlkGw1MxY0QjrH7G0fFbW0RXgo%3d</ChannelUri>
      <BodyTemplate><![CDATA[<?xml version="1.0" encoding="utf-16"?><root></root>]]></BodyTemplate>
      <WnsHeaders>
        <WnsHeader>
          <Header>X-WNS-Type</Header>
          <Value>wns/raw</Value>
        </WnsHeader>
      </WnsHeaders>
      <TemplateName>MyTemplate</TemplateName>
    </WindowsTemplateRegistrationDescription>
  </content>
</entry>
于 2014-10-22T00:20:00.603 回答
1

错误消息显然意味着请求缺少必需的 XML 元素。我的问题是大写:

两者WNSHeaderWNSHeaders都应该写成 Pascal 大小写:WnsHeaderWnsHeaders.

不幸的是,微软关于 API 的文档在这方面具有误导性。

于 2014-10-22T15:03:44.630 回答