FireStats error processing pending hits: Internal error : no id for referrer http://www.cyberforum.ru/yaproger/thread48473.html


Сериализация с DataContractSerializer

 public static class Serializer
    {
        public static string Serialize(object obj, Type type)
        {
            DataContractSerializer serializer = new DataContractSerializer(type);
            string result = string.Empty;
            using (MemoryStream stream = new MemoryStream())
            {
                serializer.WriteObject(stream, obj);
                stream.Seek(0, SeekOrigin.Begin);
                byte[] buffer = new byte[stream.Length];
                stream.Read(buffer, 0, buffer.Length);
                result = Encoding.Default.GetString(buffer);
            }
            return result;
        }

        public static object Deserialize(string xml, Type type)
        {
            DataContractSerializer serializer = new DataContractSerializer(type);
            object result = new object();
            using (MemoryStream stream = new MemoryStream())
            {
                byte[] buffer = Encoding.Default.GetBytes(xml);
                stream.Write(buffer, 0, buffer.Length);
                stream.Seek(0, SeekOrigin.Begin);
                result = serializer.ReadObject(stream);
            }
            return result;
        }

        public static string GetType(string xml)
        {
            try
            {
                string name = System.Xml.Linq.XDocument.Parse(xml).Root.Name.ToString();
                return name.Substring(name.IndexOf("}") + 1, name.Length - name.IndexOf("}") - 1);
            }
            catch { return string.Empty; }
        }
    }

Add comment октября 2, 2009

ICQ и C#.NET - Реальность или нет?

Как оказалось весьма реально :) Спасибо что есть библиотека по имени OscarLib, в которой организованы не просто обобщенные методы обращения к серверу аськи но и даже какое-то подобие ООП :) В любом случае в виду количества проделанной за нас работы грех жаловаться. Простейший пример работы приведу ниже:

Шаг 1: Создание экземпляра

Session sess = new Session("463705186", "password"); //пишем ваш UIN и пароль к нему
            sess.SetDefaultIdentification();
            /* Далее просто подписываемся на входящие события */
            sess.LoginCompleted += new LoginCompletedHandler(sess_LoginCompleted);
            sess.Messages.MessageReceived += new MessageReceivedHandler(Messages_MessageReceived);
            sess.LoginFailed += new LoginFailedHandler(sess_LoginFailed);
            sess.WarningMessage += new WarningMessageHandler(sess_WarningMessage);
            sess.ErrorMessage += new ErrorMessageHandler(sess_ErrorMessage);
            sess.Messages.TypingNotification += new TypingNotificationEventHandler(Messages_TypingNotification);
            sess.Statuses.UserStatusReceived += new UserStatusReceivedHandler(Statuses_UserStatusReceived);
            sess.Searches.FindByEmailResults += new FindByEmailResultsHandler(Searches_FindByEmailResults);

Шаг 2: Подключение

private void button1_Click(object sender, System.EventArgs e)
		{
            Capabilities caps = Capabilities.SIMKopete | Capabilities.UTF8;
			sess.ClientCapabilities = caps;
			sess.Logon("login.icq.com", 5190);
            sess.ActivateBuddyList();
		}

Вот и все - мы подлюченны :)

Шаг 3: Посылаем сообщение

sess.Messages.SendMessage("4953456", "Приветик! :)");

Просто? Просто :) Примерчик прилагается..  Поковыряем jabber теперь-ка)


4 comments сентября 10, 2009


Метки