⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shortuserinforequest.java

📁 一个类似QQ的在线通讯聊天软件原码,适合初学者参考学习。
💻 JAVA
字号:
package openicq.net;import JOscarLib.*;import JOscarLib.Core.OscarConnection;import JOscarLib.Request.Event.RequestAnswerEvent;import JOscarLib.Request.Event.RequestListener;/** * The <code>ShortUserInfoRequest</code> class requests short user info from * the ICQ server. * @author Hansgeorg Schwibbe * @copyright 2004 */public abstract class ShortUserInfoRequest implements RequestListener{  private StringBuffer[] infoBuff;  private String searchID;  private int auth;  /**   * Initializes a new instance of the class <code>ShortUserInfoRequest</code>.   * @param connection the connection to the ICQ server   * @param ownID your own user ID   * @param searchID the user ID of the user from which the short user info will   *        be requested   */  public ShortUserInfoRequest(OscarConnection connection, int ownID,                              int searchID)  {    this.searchID = String.valueOf(searchID);    // The data    RawData reqSearchID = new RawData(searchID, RawData.DWORD_LENGHT);    reqSearchID.invertIndianness();    RawData reqSubType = new RawData(0xBA04, RawData.WORD_LENGHT);    RawData reqSeqNum = new RawData(0x0200, RawData.WORD_LENGHT);    RawData reqDataType = new RawData(0xD007, RawData.WORD_LENGHT);    RawData reqOwnerID = new RawData(ownID, RawData.DWORD_LENGHT);    reqOwnerID.invertIndianness();    int chunkSize = reqOwnerID.getForcedLenght()                    + reqDataType.getForcedLenght()                    + reqSeqNum.getForcedLenght()                    + reqSubType.getForcedLenght()                    + reqSearchID.getForcedLenght();    RawData reqChunkSize = new RawData(chunkSize, RawData.WORD_LENGHT);    reqChunkSize.invertIndianness();    // The TLV    Tlv requestTlv = new Tlv(reqChunkSize, 0x01);    requestTlv.appendRawDataToTlv(reqOwnerID);    requestTlv.appendRawDataToTlv(reqDataType);    requestTlv.appendRawDataToTlv(reqSeqNum);    requestTlv.appendRawDataToTlv(reqSubType);    requestTlv.appendRawDataToTlv(reqSearchID);    // The Snac    Snac requestSnac = new Snac(0x15, 0x02, 0x00, 0x00, ownID);    requestSnac.addTlvToSnac(requestTlv);    // The Flap    Flap requestFlap = new Flap(0x02, requestSnac);    connection.sendMonitoredFlap(requestFlap, this);  }  /**   * Prototype to process the received short user info.   * @param shortInfo the received short user info   */  public abstract void onResponse(ShortUserInfo shortInfo);  /**   * Sets the received short user info and runs the <code>onResponse()</code>   * method.   * @param e answer event   */  public void onRequestAnswer(RequestAnswerEvent e)  {    Flap flap = e.getRequestAnswerPacket();    byte[] data;    int end, index;    final int success;    if (flap.getChannelId() != 0x02)    {      System.err.println("FLAP channel = "                         + String.valueOf(flap.getChannelId()));      success = -1;      return;    }    else if (flap.getSnac().getFamilyId() != 0x15             || flap.getSnac().getSubTypeId() != 0x03)    {      System.err.println("SNAC family = "                         + String.valueOf(flap.getSnac().getFamilyId())                         + ", SNAC subtype = "                         + String.valueOf(flap.getSnac().getSubTypeId()));      success = -1;      return;    }    else    {      success = flap.getSnac().getDataFieldByteArray()[16];    }    infoBuff = new StringBuffer[4];    // Save the short user info    if (success == Flag.SUCCESS)    {      data = flap.getSnac().getDataFieldByteArray();      index = 16;      for (int i = 0; i < infoBuff.length; i++)      {        index += 3;        end = index + data[index - 1] * 10 + data[index - 2] - 1;        infoBuff[i] = new StringBuffer(end - index);        while (index < end)        {          infoBuff[i].append((char) data[index]);          index++;        }      }      auth = data[data.length - 5];    }    else    {      for (int i = 0; i < infoBuff.length; i++)      {        infoBuff[i] = new StringBuffer();      }      auth = -1;    }    this.onResponse(new ShortUserInfo()    {      public int getAuthFlag()      {        return auth;      }      public String getEmail()      {        return infoBuff[3].toString();      }      public String getFirstName()      {        return infoBuff[1].toString();      }      public String getLastName()      {        return infoBuff[2].toString();      }      public String getNickName()      {        return infoBuff[0].toString();      }      public int getSuccessByte()      {        return success;      }      public String getUserID()      {        return searchID;      }    });  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -