Службы 3 и ссылка на узел
Я работаю с модулем services 3 (D7) и вызываю метод Drupal из Java-клиента. Я могу войти в систему (и сохранить сеанс в файле cookie), и я могу создать простой узел.
Но я не могу установить поле ссылки на узел.
Чтобы найти способ сделать это, я сначала посмотрел на структуру узла (с полем ссылки) на моем сайте drupal:
[field_presta_presta_suivi] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 43
)
)
)
Итак, в моем Java-клиенте я создал функцию для воспроизведения этой структуры:
public static HashMap addReferenceField(String field, String language, String type_ref,Object value, HashMap node, int delta ){
HashMap f = new HashMap();
HashMap p = new HashMap();
Object[] i = new Object[delta+1];
HashMap val = new HashMap();
val.put(type_ref, value);
i[delta] = val;
p.put(language, i);
f.put(field, p);
return f;
}
Это функция используется для создания хэш-карты, которая будет добавлена в параметр сервиса "node.create".
Эта функция работает с полем ссылки пользователя (которое имеет ту же структуру узла), но когда я использовал его для ссылки на узел, сервер вернул "Неприемлемо".
Я уже потратил на это много времени и не нашел ни одного примера или подобного случая, поэтому вот мой вопрос:
Как использовать службы 3 (D7) для создания узла с полем ссылки на узел?
2 answers
Ресурсы Служб по умолчанию все довольно разбиты, потому что они основаны на имитации фактической отправки формы (бла!). Я рекомендую вместо этого использовать те, которые предоставляются сущностью Услуг.
Нет необходимости искать другой модуль, следующая структура json поможет вам создать поле ссылки на узел,
"field_specialization":
{
"und":
{
"value":"10"
}
}