Создаем Drupal-страницы (XML-RPC “node.save”)

В данном способе создания нод будут использоваться модули Key Authentication, XMLRPC Server, Node Service и User Service из решения Drupal Services 6.x-2.2 (выбрал 6.x-2.2 как наиболее безглючную)
Подключаем их, далее идем в панели Administer › Site building › Services Administer › Site building › Services, жмем “Создать ключ”, задаем название, указываем что-нибудь в поле “Allowed domain” и выбираем разрешенные методы – в моем случае это system.connect, user.login и node.save. В настройках модуля Services выбираем тип авторизации – “Key Authentication”.
Скачиваем библиотеку XML-RPC, компилим ее и добавляем в ссылки проекта VS2008 файл CookComputing.XmlRpcV2.dll, в using добавляем CookComputing.XmlRpc и System.Security.Cryptography.
Внутри класса добавляем:

Создание ноды будем производить, скажем, по нажатию кнопки, обработчик будет такой:

Дополнительные функции:

Из-за string CCK-полей VS у меня ругалась “Response from server does not contain valid xml” и “Существует несколько корневых элементов” (“There are multiple root elements”). Fiddler показал ошибку “Cannot unset string offsets”.
Исправил применением патча

к файлу /sites/all/modules/cck/includes/content.node_form.inc

Скачать проект Visual Studio 2008: drU-XRPC.cab

Discussion

Руслан
05.03.2010
В случае проблем с CCK-полями советую использовать библиотеку DrupalXmlRpc, скопировал ее и пример использования сюда: DrupalXmlRpc_Demo.cab
MolineSoftware.DrupalXmlRpc_V2.0.cab, можете скачать. Объявляйте-добавляйте в CustomNode.cs свои CCK-поля:
[XmlRpcMember(Member = "ma_CCK_field")]
public XmlRpcStruct[] MaCCK_ImportntDatta { get; set; }
 
// но для Path тип - string:
[XmlRpcMember(Member = "path")]
public string Path_URLalias { get; set; }
drupal
08.06.2010
Не могу получить содержимое ни одной ноды ("node.get") все время выдает access denied
Руслан
23.07.2010
Внесите изменения в /admin/build/services/keys - надо дать разрешения используемым методам (поставьте галочку node.get в вашем случае) и здесь пишут так:
So, we need to set the following permissions:
module		permission				role
node_service	load node data				anonymous
services	administer services			administrator
system_service	[none for anonymous for this example]	anonymous
user_service	[none for anonymous for this example]	anonymous
Гость
01.09.2012
в 2010-й студии это скомпилится?
Гость
30.04.2013
Здравствуйте. Пробовал сделать как у вас, но все время выходит ошибка "Items in array cannot be null". Как понять какой array я не заполнил и где?
Руслан
09.05.2013
у MolineSoftware.DrupalXmlRpc такая ошибка возникает, когда вы объявляете CCK поле в классе ExmaplNode, но не заполняете его
Гость
28.02.2014
Здравствуйте, не могу скачать ваш файл /stuff/drU-XRPC.cab - не найден. Перезалете пожалуйста
Антон
21.03.2016
Здравствуйте! Вы перезаливали файл druxrpc.cab? Тоже не получается скачать...

Җавап калдыру



All fields are required. Your email address will not be published.

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert