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

📄 setbasicuserinforequest.java

📁 一个类似QQ的在线通讯聊天软件原码,适合初学者参考学习。
💻 JAVA
字号:
package openicq.net;

import JOscarLib.*;
import JOscarLib.Core.OscarConnection;
import JOscarLib.Request.Event.RequestAnswerEvent;
import JOscarLib.Request.Event.RequestListener;

/**
 * The <code>SetBasicUserInfoRequest</code> class updates your own user
 * details on the ICQ server.
 * @author Hansgeorg Schwibbe
 * @copyright 2004
 */
public abstract class SetBasicUserInfoRequest implements RequestListener
{
  /**
   * Initializes a new instance of the class
   * <code>SetBasicUserInfoRequest</code>.
   * @param connection the connection to the ICQ server
   * @param ownID your own user ID
   * @param nickName your new nickname
   * @param firstName your new first name
   * @param lastName your new last name
   * @param email your new email
   * @param homeCity your new home city
   * @param homeState your new state
   * @param homePhone your new phone number
   * @param homeFax your new fax number
   * @param homeAddress your new address
   * @param cellPhone your new cellular number
   * @param homeZip your new zip code
   * @param homeCountry your new country
   * @param gmtOffset the offset to GMT
   * @param publishEmail the visibility of your email
   */
  public SetBasicUserInfoRequest(OscarConnection connection, int ownID,
                                 char[] nickName, char[] firstName,
                                 char[] lastName, char[] email,
                                 char[] homeCity, char[] homeState,
                                 char[] homePhone, char[] homeFax,
                                 char[] homeAddress, char[] cellPhone,
                                 char[] homeZip, int homeCountry,
                                 char gmtOffset, char publishEmail)
  {
    RawData reqNicknameLen = new RawData(nickName.length + 1,
                                         RawData.WORD_LENGHT);
    reqNicknameLen.invertIndianness();
    RawData reqFirstNameLen = new RawData(firstName.length + 1,
                                          RawData.WORD_LENGHT);
    reqFirstNameLen.invertIndianness();
    RawData reqLastNameLen = new RawData(lastName.length + 1,
                                         RawData.WORD_LENGHT);
    reqLastNameLen.invertIndianness();
    RawData reqEmailLen = new RawData(email.length + 1, RawData.WORD_LENGHT);
    reqEmailLen.invertIndianness();
    RawData reqHomeCityLen = new RawData(homeCity.length + 1,
                                         RawData.WORD_LENGHT);
    reqHomeCityLen.invertIndianness();
    RawData reqHomeStateLen = new RawData(homeState.length + 1,
                                          RawData.WORD_LENGHT);
    reqHomeStateLen.invertIndianness();
    RawData reqHomePhoneLen = new RawData(homePhone.length + 1,
                                          RawData.WORD_LENGHT);
    reqHomePhoneLen.invertIndianness();
    RawData reqHomeFaxLen = new RawData(homeFax.length + 1, RawData.WORD_LENGHT);
    reqHomeFaxLen.invertIndianness();
    RawData reqHomeAddressLen = new RawData(homeAddress.length + 1,
                                            RawData.WORD_LENGHT);
    reqHomeAddressLen.invertIndianness();
    RawData reqCellPhoneLen = new RawData(cellPhone.length + 1,
                                          RawData.WORD_LENGHT);
    reqCellPhoneLen.invertIndianness();
    RawData reqHomeZipLen = new RawData(homeZip.length + 1, RawData.WORD_LENGHT);
    reqHomeZipLen.invertIndianness();
    RawData reqHomeCountry = new RawData(homeCountry, RawData.WORD_LENGHT);
    reqHomeCountry.invertIndianness();
    RawData reqSubType = new RawData(0xEA03, 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()
                    + reqNicknameLen.getForcedLenght() + nickName.length + 1
                    + reqFirstNameLen.getForcedLenght() + firstName.length + 1
                    + reqLastNameLen.getForcedLenght() + lastName.length + 1
                    + reqEmailLen.getForcedLenght() + email.length + 1
                    + reqHomeCityLen.getForcedLenght() + homeCity.length + 1
                    + reqHomeStateLen.getForcedLenght() + homeState.length + 1
                    + reqHomePhoneLen.getForcedLenght() + homePhone.length + 1
                    + reqHomeFaxLen.getForcedLenght() + homeFax.length + 1
                    + reqHomeAddressLen.getForcedLenght() + homeAddress.length
                    + 1 + reqCellPhoneLen.getForcedLenght() + cellPhone.length
                    + 1 + reqHomeZipLen.getForcedLenght() + homeZip.length + 5;
    RawData reqChunkSize = new RawData(chunkSize, RawData.WORD_LENGHT);
    reqChunkSize.invertIndianness();
    // TLV
    Tlv requestTlv = new Tlv(reqChunkSize, 0x01);
    requestTlv.appendRawDataToTlv(reqOwnerID);
    requestTlv.appendRawDataToTlv(reqDataType);
    requestTlv.appendRawDataToTlv(reqSeqNum);
    requestTlv.appendRawDataToTlv(reqSubType);
    requestTlv.appendRawDataToTlv(reqNicknameLen);
    for (int i = 0; i < nickName.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(nickName[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqFirstNameLen);
    for (int i = 0; i < firstName.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(firstName[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqLastNameLen);
    for (int i = 0; i < lastName.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(lastName[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqEmailLen);
    for (int i = 0; i < email.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(email[i], RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomeCityLen);
    for (int i = 0; i < homeCity.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(homeCity[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomeStateLen);
    for (int i = 0; i < homeState.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(homeState[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomePhoneLen);
    for (int i = 0; i < homePhone.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(homePhone[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomeFaxLen);
    for (int i = 0; i < homeFax.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(homeFax[i], RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomeAddressLen);
    for (int i = 0; i < homeAddress.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(homeAddress[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqCellPhoneLen);
    for (int i = 0; i < cellPhone.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(cellPhone[i],
                                                RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomeZipLen);
    for (int i = 0; i < homeZip.length; i++)
    {
      requestTlv.appendRawDataToTlv(new RawData(homeZip[i], RawData.BYTE_LENGHT));
    }
    requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(reqHomeCountry);
    requestTlv.appendRawDataToTlv(new RawData(gmtOffset, RawData.BYTE_LENGHT));
    requestTlv.appendRawDataToTlv(new RawData(publishEmail, RawData.BYTE_LENGHT));
    // Snac
    Snac requestSnac = new Snac(0x15, 0x02, 0x00, 0x00, ownID);
    requestSnac.addTlvToSnac(requestTlv);
    // Flap
    Flap requestFlap = new Flap(0x02, requestSnac);
    connection.sendMonitoredFlap(requestFlap, this);
  }

  /**
   * Prototype for processing the success byte.
   * @param success the success byte
   */
  public abstract void onResponse(int success);

  /**
   * Sets the success byte and runs the <code>onResponse()</code> method.
   * @param e answer event
   */
  public void onRequestAnswer(RequestAnswerEvent e)
  {
    Flap flap = e.getRequestAnswerPacket();
    int success;
    if (flap.getChannelId() != 0x02)
    {
      success = -1;
    }
    else if (flap.getSnac().getFamilyId() != 0x15
             || flap.getSnac().getSubTypeId() != 0x03)
    {
      success = -1;
    }
    else
    {
      success = flap.getSnac().getDataFieldByteArray()[16];
    }
    this.onResponse(success);
  }
}

⌨️ 快捷键说明

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