Что означает следующий ответ 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 вводит в заблуждение относительно этого.
Попробуй это:
- Позвонить Создать регистрационный номер
- Сохранить полученный идентификатор в вашей БД
- Позвоните Создать или обновить регистрацию для создания регистрации
- Каждый раз, когда вы хотите обновить эту регистрацию в будущем (обновить канал, изменить теги...), вы просто снова вызываете "Создать или обновить регистрацию".
Я только что успешно поиграл с полезной нагрузкой ниже:
<?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>