2010-01-28 1 views
4

Я подключен к серверу (XMPP) , но не может отправлять и принимать пакеты в моем пси клиентеКак я могу создавать, отправлять и получать Iq пакеты с помощью привкуса (Java)

Вот фрагмент моего кода

POSClientIQ posclientiq = new POSClientIQ(); 
    posclientiq.connectXMPPServer(); 
    posclientiq.processMessage(); 
    } 

    public void processMessage() 
    { try{ 

     final IQ iq1 = new IQ() { 
    public String getChildElementXML() { 
     return "<iq type='get' from ='sam'><query xmlns='jabber:iq:roster'></query></iq>"; 
    } 
    }; 

    iq1.setType(IQ.Type.GET); 
// PacketCollector collector = connection.createPacketCollector(new PacketIDFilter(iq1.getPacketID())); 
    connection.sendPacket(iq1); 

    System.out.println("Message send"); 

ответ

2

GetChildElementXML() возвращает тег. Если вы используете Smack, вам не нужно писать свою собственную реализацию IQ, если это не пользовательский запрос. Для вашего случая, чтобы запросить список, используйте RosterPacket.

+0

так, как я могу получить теги IQ ?, я могу получить его в PacketListener ... – user724861

2

Если у вас есть пользовательский запрос, и вы хотели бы использовать реализацию IQ, то:

final IQ iq = new IQ() { 
public String getChildElementXML() { 
return "<query xmlns='http://jabber.org/protocol/disco#info'/>"; // here is your query 
//this returns "<iq type='get' from='[email protected]/Resource' id='info1'> <query xmlns='http://jabber.org/protocol/disco#info'/></iq>"; 
}}; 
// set the type 
iq.setType(IQ.Type.GET); 
// send the request 
connection.sendPacket(iq); 

Как вы можете видеть вас здесь свой собственный запрос и использовать Smack, чтобы установить остальную часть вашего IQ, например, установив тип. Обратите внимание, что Smack заполняет «from» для вас на основе JID, в который вы вошли.

+1

, как я могу получить ответ этого сырья запроса? я не могу получить ответ от него –

0
//To retrieve archive msges from server.. 

MyCustomIQ iq = new MyCustomIQ(); 
     iq.setType(IQ.Type.set); 
    mConnection.sendIqWithResponseCallback(iq, new PacketListener() { 
       @Override 
       public void processPacket(Packet packet) throws SmackException.NotConnectedException { 
        Log.i("Send IQ with Response", "****** message " + packet); 
       } 
      }, new ExceptionCallback() { 
       @Override 
       public void processException(Exception exception) { 
        exception.printStackTrace(); 
        Log.i("IO archjieve Exception",""+ exception.getMessage()); 
       } 
      }, 5000); 

     mConnection.sendPacket(new Presence(Presence.Type.available)); 
      PacketTypeFilter filter=new PacketTypeFilter(org.jivesoftware.smack.packet.Message.class); 
      PacketListener myListener=new PacketListener(){ 
       public void processPacket(Packet packet){ 
        if(((Message) packet).getType().equals(Message.Type.chat)) 
        { 
         ((Message) packet).getBody(); 
        } 
        else if(((Message) packet).getType().equals(Message.Type.normal)) 
        { 
         DefaultPacketExtension pacExten=PacketUtil.packetExtensionfromCollection(packet.getExtensions(), "result", "urn:xmpp:mam:0"); 
         String strMsg=pacExten.getValue("body"); 
        } 
       } 
      } 
      ; 
      mConnection.addPacketListener(myListener, filter); 


    //My Custom IQ 
    class MyCustomIQ extends IQ { 

      String token; 


      protected MyCustomIQ() { 
      super("query","urn:xmpp:mam:0"); 
      } 



      @Override 
      protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { 
    // String queryId = prefix + Long.toString(new AtomicLong().incrementAndGet()); 
       xml.attribute("queryid",queryId); 
       xml.rightAngleBracket(); 
       return xml; 
      } 


     } 


//You may get the response in PacketListerener sometimes so put debug in that also 
+0

как я могу отправить для этого <длительность сеанса = "60" /> <тело отправить = "все" к конференции = "истина" из = "JID" /> <статус типа = "ха"> Текст сообщения, когда в нажимной режиме ложный <уведомление> applepush DeviceToken Application1

 Смежные вопросы

  • Нет связанных вопросов^_^