Публикация элемента с полезной нагрузкой на узле Pubsub с помощью Smack - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь использовать Smack для публикации элемента с полезной нагрузкой на узле pubsub, но мне пока не удалось.Я создал узел и установил его конфигурацию для доставки полезной нагрузки (setDeliverPayloads = true).Я использую метод отправки для отправки элемента с полезной нагрузкой.

 node.send(new PayloadItem(this.clientNodeName+"*" + System.currentTimeMillis(), new SimplePayload("my book", "books:pubsub:simple", "")));

Тем не менее элемент публикуется без полезной нагрузки.Построенный IQ также не имеет полезной нагрузки.Как я вижу из панели отладки smack

Это то, что сконструировано smack и отправлено в сервис pubsub (явно нет полезной нагрузки)

<iq id="1ha20-11" to="pubsub.127.0.0.1" type="set">
   <pubsub xmlns="http://jabber.org/protocol/pubsub">
   <publish node="autoIncrement">
       <item id="autoIncrement*1333380921970"/>
   </publish>
  </pubsub>
</iq>

Буду признателен за любую помощьрешить эту проблему.Конечно, я все еще могу использовать собственные сообщения IQ, но постараюсь избежать этого, чтобы максимально использовать использование PubSubManager в API smack.

1 Ответ

6 голосов
/ 03 апреля 2012

Код выше не имеет никаких проблем. Единственная проблема заключается в том, что приведенный выше пример имеет пустую полезную нагрузку (SimplePayload ("моя книга", "books: pubsub: simple", "")), поэтому smack даже не показывает полезную нагрузку элемента.

Как только полезная нагрузка будет указана, она будет включена в опубликованный элемент.

вот код для публикации элемента с полезной нагрузкой

  node.send(new PayloadItem(this.clientNodeName+"*" + System.currentTimeMillis(), new SimplePayload(load, "stage:pubsub:simple", "<book xmlns='pubsub:test:book'><title>Lord of the Rings</title></book>")));

и это ожидаемый IQ, отправленный на Jabbered сервер

<iq id="OIqU4-12" to="pubsub.stage.127.0.0.1" type="set">
      <pubsub xmlns="http://jabber.org/protocol/pubsub">
        <publish node="autoIncrement">
          <item id="autoIncrement*1333438199718">
            <book xmlns="pubsub:test:book">
              <title>Lord of the Rings</title>
            </book>
          </item>
    </publish>
  </pubsub>
</iq>
...