Получи 30.000 рублей от codeby

Мы запустили конкурс для авторов, в котором может принять участие любой желающий. За первое место - 7500 руб., второе - 5000, третье 2500. Главный приз 30.000 рублей вы получаете независимо от места в конкурсе. Подробнее на форуме codeby ...

Как программно добавить запись в жж (livejournal) ?

В этой статье хочу показать, как можно программно добавить новую запись в жж (livejournal) с помощью протокола XML-RPC и языка c#. Не давно пришлось решать такую задачу, возможно, кому-то тоже понадобиться, поэтому решил оставить здесь готовое решение. Сразу же скажу, что работу протокола объяснять в этой статье не буду, если что-то будет не понятно, то спрашивайте в комментариях либо попробуйте найти ответ в статье: Вызов удаленной процедуры WordPress с помощью протокола XML-RPC.

И так, как обычно для начала создадим Windows Forms приложение, после чего поместим на форму кнопку и текстовое поле (textBox), которое будем использовать для отладки, то есть будем туда выводить различные ошибки, сообщение об успешном выполненном действии и так далее. Затем добавим в проект xml файл (NewPost.xml), в котором будут храниться все передаваемые в запросе параметры.

Добавление новой записи

И так, чтобы создать и добавить новую запись в жж, необходимо вызвать удаленную процедуру postevent.

Обратите внимание, что при указании названия функции используется полное наименование: LJ.XMLRPC.postevent, где первая часть — это префикс, который всегда остаётся неизменным, а вторая часть — это название функции. Это важно помнить, чтобы не допустить ошибку уже в самом начале своей работы.

В качестве аргументов данная функция принимает структуру, которая состоит из 18 параметров:

Аутентификация:

  • username(required)
  • auth_method(optional)
  • password(optional)
  • hpassword(optional)
  • auth_challenge(optional)
  • auth_response(optional)

Пост:

  • ver(optional)
  • event(required)
  • lineendings(required)
  • subject(required)
  • security(optional)
  • allowmask(optional)
  • year(required)
  • mon(required)
  • day(required)
  • hour(required)
  • min(required)
  • props(optional)

Среди доступных параметров всего 9 являются обязательными (required), остальные являются необязательными, поэтому в этой статье многие из них рассматриваться не будут.

Аутентификация в жж

Перед тем, как вызвать удаленную процедуру на сервере, Вам нужно пройти процедуру аутентификации, то есть проверку, например указанного или введенного Вами пароля с паролем, который хранится в базе данных сервера. Всего доступно 3 способа аутентификации: Clear, HTTP Cookies и Challenge-Response. В этой статье рассмотрим первый способ, так как он самый простой, а в следующей статье я расскажу про два оставшихся.

Clear

Для указания способа аутентификации на сервере используется параметр auth_method.


Набираем команду codeby webinar

Набираем команду для организации и проведения вебинаров Подробнее ...

Но, так как выбранное нами значение (Clear) используется по умолчанию, то его можно не указывать явно в запросе, как и сам параметр. Но при этом Вам обязательно нужно передать на сервер два дополнительных параметра: username (имя пользователя) и либо параметр password (пароль), который передается открытым текстом (plaintext), либо hpassword, чуть более защищенный способ, который позволяет передать MD5 хэш пароля.

Пример с параметром password.

добавление параметров

Тип параметра необязательно указывать явно, так как по умолчанию все параметры уже имеют тип string, поэтому хотите, указывайте его, хотите, нет, ошибки не будет.

И ещё один пример с параметром hpassword. В отличие от предыдущего примера, в этом нам сначала нужно получить md5-хэш пароля, а затем добавить полученное значение в элемент value.

Подставляем полученный хэш.

Создание новой записи

А теперь переходим к созданию нового поста в жж. Для этого необходимо воспользоваться несколькими оставшимися параметрами:

  • event — содержимое поста
  • lineendings — указываете, какой тип завершения строк Вы используете. Здесь всё просто, если у Вас Windows, то указываете pc, если linux то unix, если mac — то идентичное название.
  • subject — название поста. Длина не более 255 символов в одну строчку без переноса строки.
  • year (год)
  • Mon (месяц)
  • Day (день)
  • Hour (часы от 0 до 23)
  • Min (минуты)

Помимо обязательных параметров Вы можете добавить и необязательные параметры, например:

ver (версия протокола) — имеет два значения: 0 (по умолчанию) и 1. Основное отличие в том, что протокол версии 1 имеет поддержку Unicode, что даёт Вам возможность обмениваться текстовой информации в кодировке UTF8 между клиентом и сервером.

security (безопасность) — позволяет указать, кто может прочитать созданный пост. Допустимые значения: public (по умолчанию) — для всех и private — личная запись. Так же Вы можете добавить любые другие параметры.

Полная версия XML файла

В ответ на отправленный нами запрос, мы получаем xml документ, который содержит четыре параметра, среди которых Вы можете найти id и ссылку (URL адрес) созданной или добавленной записи. Но, в данном примере нас это не особо интересует, главное убедиться в том, что запрос был успешно выполнен и в документе не содержится элемент fault, который говорит о наличие каких-то ошибок.

Полный листинг кода

результат

добавленная запись в жж

Читайте также:


Требуются разработчики и тестеры для проекта codebyOS

Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

Похожие темы

Получение контроля над WordPress с помощью XML-RPC... WordPress не стал самой популярной платформой на планете для CMS и размещения блога, потому что он является довольно сложным в использовании. Скор...
c# Как быстро найти ссылки на сайте?... Как найти ссылки на сайте? Сегодня на простом примере я хочу показать Вам, как можно быстро найти ссылки на сайте с помощью элемента управления WebBro...