Что означает следующий ответ REST Azure Notification Hub: "Указанное описание ресурса недопустимо."?

Я пытаюсь зарегистрировать свое универсальное приложение Windows для уведомлений из центра уведомлений Azure через нашу внутреннюю службу Java.

Я отладил приложение в Visual Studio, когда оно работало на моем устройстве Windows Phone. Приложение могло правильно получить ChannelUri и передать его нашему бэкэнду Java. (Я запустил бэкэнд на своем локальном ПК.)

Серверная часть Java сгенерировала следующий запрос на регистрацию шаблона и попыталась отправить его в API-интерфейс REST Azure:

<?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>

По моему мнению, это в соответствии со ссылкой REST MS Azure: 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?

2 ответа

Сообщение об ошибке, очевидно, означает, что в запросе отсутствуют обязательные элементы XML. Проблемой в моем случае была капитализация:

И то и другоеWNSHeaderа такжеWNSHeadersдолжно быть написано в случае Паскаль вместо:WnsHeaderа такжеWnsHeaders,

К сожалению , документация Microsoft по API вводит в заблуждение относительно этого.

Попробуй это:

  1. Позвонить Создать регистрационный номер
  2. Сохранить полученный идентификатор в вашей БД
  3. Позвоните Создать или обновить регистрацию для создания регистрации
  4. Каждый раз, когда вы хотите обновить эту регистрацию в будущем (обновить канал, изменить теги...), вы просто снова вызываете "Создать или обновить регистрацию".

Я только что успешно поиграл с полезной нагрузкой ниже:

<?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>
Другие вопросы по тегам