smack操作openfire个人信息

smack操作openfire个人信息

  (2013-05-23 10:18:19)
  分类: xmpp协议

// 用户登录
 public boolean loginByUserName(String userName, String passWord,
   String flage) {
  boolean result = false;
  ConfigTools configTools = new ConfigTools();
  ConnectionConfiguration config = new ConnectionConfiguration(configTools.getOpenfireIp());
  // serverIp表示的是你openfire服务器地址
  config.setReconnectionAllowed(false);
  config.setSendPresence(false);
  XMPPConnection connection = new XMPPConnection(config);
  try {
   connection.connect();
   connection.login(userName, passWord, flage);
   System.out.println(connection.getUser() + " 登录即时通讯服务器成功!");
   result = true;
  } catch (Exception e) {
   System.out.println("登录即时通讯服务器失败!");
   result = false;
  }
  return result;
 }

 // 用户退出
 public boolean unLoginByUserName(String userName, String passWord) {
  boolean result = false;
  // serverIp表示的是你openfire服务器地址
  XMPPConnection connection = ToolsUtil.getUserConn(userName, passWord);
  try {
   Presence presence = new Presence(Presence.Type.available);
   connection.disconnect(presence);
   System.out.println(connection.getUser() + "退出即时通讯服务器成功!");
   result = true;
  } catch (Exception e) {
   System.out.println("退出即时通讯服务器失败!");
   result = false;
  }
  return result;
 }

 // 发送消息
 public void testSenderMsg(String jid, String body, String userName,
   String passWord) {
  try {
   Message req = new Message();
   req.setTo(jid);
   req.setBody(body);
   req.setProperty("name", "aaa");
   req.setProperty("age", "123");
   req.setProperty("bir", "2012-1-1");
   XMPPConnection conn = ToolsUtil.getUserConn(userName, passWord);
   conn.sendPacket(req);
  } catch (RuntimeException e) {
   e.printStackTrace();
  }
 }

 // 添加用户
 public void testAddUserMsg(String userName, String passWord) {
  try {
   XMPPConnection connection = ToolsUtil.getAdminConn();
   try {
    AccountManager accountManager = connection.getAccountManager();
    
    Map attributes = new HashMap();
    attributes.put("email", "email@sina.com");
    attributes.put("name", "name");
    attributes.put("dept", "部门");
    accountManager.createAccount(userName, passWord, attributes);
   } catch (XMPPException e) {
    e.printStackTrace();
   }
  } catch (RuntimeException e) {
   e.printStackTrace();
  }
 }

 // 修改密码
 public void testChangeUserMsg(String userName, String password,
   String changePassword) {
  try {
   XMPPConnection connection = ToolsUtil.getUserConn(userName,
     password);
   try {
    AccountManager accountManager = connection.getAccountManager();
    
    accountManager.changePassword(changePassword);
   } catch (XMPPException e) {
    e.printStackTrace();
   }
  } catch (RuntimeException e) {
   e.printStackTrace();
  }
 }

 
 public static boolean deleteAccount(XMPPConnection connection) {
  try {
   connection.getAccountManager().deleteAccount();
   return true;
  } catch (Exception e) {
   return false;
  }
 }

 public static void getMsg(XMPPConnection connection) {
  MessageListener msgListener = new MessageListener() {
   public void processMessage(Chat chat, Message message) {
    if (message != null && message.getBody() != null) {
     System.out.println("收到消息:" + message.getBody());
    }
   }
  };
  Chat chat = connection.getChatManager()
    .createChat("yancj", msgListener);
  ChatManager manager = connection.getChatManager();
  manager.addChatListener(new ChatManagerListener() {
   public void chatCreated(Chat chat, boolean arg1) {
    chat.addMessageListener(new MessageListener() {
     public void processMessage(Chat arg0, Message message) {
      // 若是聊天窗口已存在,将消息转往目前窗口
      // 若是窗口不存在,开新的窗口并注册

     }
    });
   }
  });
 }

 public static void sendMessage(Chat chat, Message message)
   throws XMPPException {
  // Message msg = new Message();
  // msg.setProperty("size", "size");
  // msg.setBody(getSendInfo());//真正的消息
  // chat.sendMessage(msg);
  // chat.sendMessage(message);
 }

 public static void sendMessageCollector() {
  System.out.println("&&&&&&&&&&&&");
  try {
   XMPPConnection connection = ToolsUtil
     .getUserConn("zhangsan", "123");
   PacketFilter filter = new AndFilter(new PacketTypeFilter(
     Message.class), new FromContainsFilter(
     "yancj@windows-4b7lu7t/web"));
   PacketCollector myCollector = connection
     .createPacketCollector(filter);
   PacketListener myListener = new PacketListener() {
    @Override
    public void processPacket(Packet packet) {
     System.out.println("____________________");
    }
   };
   connection.addPacketListener(myListener, filter);
  } catch (Exception e) {

  }
 }

 
 public static VCard getUserVCard(XMPPConnection connection) throws XMPPException {
  VCard vcard = new VCard();
  vcard.load(connection);
  System.out.println(vcard.getField("sex"));
  System.out.println(vcard.getField("DESC"));
  System.out.println(vcard.getEmailHome());
  System.out.println(vcard.getOrganization());
  System.out.println(vcard.getNickName());
  System.out.println(vcard.getPhoneWork("PHONE"));
  System.out.println(vcard.getProperty("DESC"));
  System.out.println(vcard.getAvatar());
  return vcard;
 }
 
 
 public static VCard getUserVCard(XMPPConnection connection, String userJid)
   throws XMPPException {
  VCard vcard = new VCard();
  vcard.load(connection,userJid);
  System.out.println(vcard.getOrganization());
  System.out.println(vcard.getField("sex"));
  System.out.println(vcard.getNickName());
  System.out.println(vcard.getAvatar());
  System.out.println(vcard.getField("DESC"));
  return vcard;
 }

 public static void setUserVCard(XMPPConnection connection)
   throws XMPPException {
  VCard vCard = new VCard();
  vCard.load(connection);
  vCard.setEmailHome("lulu@sina.com");
  vCard.setOrganization("售后");
  vCard.setNickName("颜昌军t2");
  vCard.setField("sex", "男");
  vCard.setPhoneWork("PHONE", "3443233");
  vCard.setField("DESC", "描述信息。。。");
  // vCard.setAvatar(vCard.getAvatar());
  vCard.save(connection);
  System.out.println("添加成功");
 }

 
 public static ImageIcon getUserImage(XMPPConnection connection, String user) {
  ImageIcon ic = null;
  try {
   System.out.println("获取用户头像信息: " + user);
   VCard vcard = new VCard();
   vcard.load(connection, user);
   if (vcard == null || vcard.getAvatar() == null) {
    return null;
   }
   ByteArrayInputStream bais = new ByteArrayInputStream(vcard
     .getAvatar());
   Image image = ImageIO.read(bais);
   ic = new ImageIcon(image);
   System.out.println("图片大小:" + ic.getIconHeight() + " "
     + ic.getIconWidth());

  } catch (Exception e) {
   e.printStackTrace();
  }
  return ic;
 }

 public static List searchUsers(XMPPConnection connection,
   String serverDomain, String userName) throws XMPPException {
  List results = new ArrayList();
  System.out.println("查询开始..............." + connection.getHost()
    + connection.getServiceName());
  UserSearchManager usm = new UserSearchManager(connection);
  Form searchForm = usm.getSearchForm(serverDomain);
  Form answerForm = searchForm.createAnswerForm();
  answerForm.setAnswer("Username", true);
  answerForm.setAnswer("search", userName);
  ReportedData data = usm.getSearchResults(answerForm, serverDomain);
  Iterator it = data.getRows();
  Row row = null;
  UserBean user = null;
  while (it.hasNext()) {
   user = new UserBean();
   row = it.next();
   user.setUserName(row.getValues("Username").next().toString());
   user.setName(row.getValues("Name").next().toString());
   user.setEmail(row.getValues("Email").next().toString());
   System.out.println(row.getValues("Username").next());
   System.out.println(row.getValues("Name").next());
   System.out.println(row.getValues("Email").next());
   results.add(user);
  }
  return results;
 }

 

 // public static void sendFile(String userName, String passWord, String
 // user,
 // File file){
 // try {
 // XMPPConnection connection = ToolsUtil.getUserConn(userName,
 // passWord);
 // System.out.println("发送文件开始" + file.getName());
 // FileTransferManager transfer = new FileTransferManager(connection);
 // OutgoingFileTransfer out =
 // transfer.createOutgoingFileTransfer(user+"/Smack");
 // out.sendFile(file, file.getName());
 // // System.out.println("//");
 // // System.out.println(out.getStatus());
 // // System.out.println(out.getProgress());
 // // System.out.println(out.isDone());
 // // System.out.println("//");
 // // System.out.println("发送文件结束");
 // // long timeOut = 1000000;
 // // long sleepMin = 3000;
 // // long spTime = 0;
 // // int rs = 0;
 // // out.sendFile(file, file.getName());
 // // rs = out.getStatus().compareTo(FileTransfer.Status.complete);
 // // while(rs!=0){
 // // rs = out.getStatus().compareTo(FileTransfer.Status.complete);
 // // spTime = spTime + sleepMin;
 // // if(spTime>timeOut){
 // // return ;
 // // }
 // // Thread.sleep(sleepMin);
 // // }
 // System.out.println("//");
 // System.out.println(out.getStatus());
 // System.out.println(out.getProgress());
 // System.out.println(out.isDone());
 // System.out.println("//");
 // System.out.println("发送文件结束");
 // } catch (Exception e) {
 // e.printStackTrace();
 // }
 // }

 public static void sendFile(String userName, String passWord, String user, File file) {
  try {
   XMPPConnection connection = ToolsUtil.getUserConn(userName,passWord);
   System.out.println("发送文件开始" + file.getName());
   FileTransferManager transfer = new FileTransferManager(connection);
   String destination = user + "/spark";
   final OutgoingFileTransfer out = transfer.createOutgoingFileTransfer(destination);
   System.out.println(connection.getPort());
   if (file.exists()) {
    System.out.println("文件存在");
   }
   long timeOut = 100000;
   long sleepMin = 3000;
   long spTime = 0;
   int rs = 0;
   try {
    byte[] fileData = getFileBytes(file);
    OutputStream os = out.sendFile(file.getName(), fileData.length,"you won't like it");
    os.write(fileData);
    os.flush();
    rs = out.getStatus().compareTo(FileTransfer.Status.complete);
    while (rs != 0) {
     System.out.println("getStatus" + out.getStatus().toString());
     rs = out.getStatus().compareTo(FileTransfer.Status.complete);
     System.out.println(rs);
     spTime = spTime + sleepMin;
     if (spTime > timeOut) {
      System.out.println("fail" + "文件发送失败");
      return;
     }
     Thread.sleep(sleepMin);
    }
    System.out.println("end send file");
   } catch (XMPPException e) {
    e.printStackTrace();
   } catch (InterruptedException e) {
    e.printStackTrace();
   } catch (Exception e) {
    e.printStackTrace();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public static byte[] getFileBytes(File file) throws IOException {
  BufferedInputStream bis = null;
  byte[] buffer = null;
  try {
   bis = new BufferedInputStream(new FileInputStream(file));
   int bytes = (int) file.length();
   buffer = new byte[bytes];
   int readBytes = bis.read(buffer);
   if (readBytes != buffer.length) {
    throw new IOException("not read");
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (bis != null) {
    bis.close();
   }
  }
  return buffer;
 }

 public static void main(String[] args) throws XMPPException {
   UserMsg userMsg = new UserMsg();
//   userMsg.testSenderMsg("test3@windows-4b7lu7t", "1111111111111", "yancj", "123");
  // ConfigTools configTools = new ConfigTools();
  XMPPConnection connection = ToolsUtil.getUserConn("yancjt2", "123");
//   AccountManager accountManager = connection.getAccountManager();
//    for (String attr : accountManager.getAccountAttributes()) {
//    System.out.println(accountManager.getAccountAttribute("name"));
//   }
  // getUserImage(connection, "yancj1@linux65");
  // ConfigTools configTools = new ConfigTools();

  // searchUsers(connection, configTools.getOpenfireDomain(), "cte");
  
//   userMsg.testAddUserMsg("test6", "123");
  // try {
  
  // } catch (Exception e) {
  // e.printStackTrace();
  // System.out.println(e.getMessage());
  // }
//   getUserVCard(connection,"admin@linux88");
  
  
//  File file = new File("E:\\smarck.txt");
//  sendFile("ctest1", "123", "ctest3@windows-4b7lu7t/web", file);
  
//  setUserVCard(connection);
   getUserVCard(connection);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值