Servizi 3 e nodo di riferimento
Domanda
Sto lavorando con i servizi del modulo 3 (D7) e sto chiamando il metodo Drupal da un client Java. Posso entrare (e mantenere la sessione in un cookie) e posso creare un nodo semplice.
Ma non posso impostare un campo di riferimento del nodo.
Per trovare il modo di farlo, ho guardato alla struttura nodo (con il campo di riferimento) nel mio sito Drupal:
[field_presta_presta_suivi] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 43
)
)
)
Quindi, a mio client Java, ho creato una funzione per riprodurre questo struttura:
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;
}
Questa funzione viene utilizzata per creare un HashMap che sarà aggiunta al parametro del servizio 'node.create'.
Questa funzione opera con un utente refence campo (che ha lo stesso struture nodo), ma quando l'ho usato per un riferimento nodo, il server ha restituito "inaccettabile".
Ho già passato un sacco di tempo su di esso e non ha trovato alcun esempio o caso simile, ecco la mia domanda:
Come si utilizzano i servizi 3 (D7) per creare un nodo con un campo di riferimento nodo?
Soluzione
Le risorse di default di servizi sono tutti abbastanza rotto, perché si basano sulla simulazione di un invio di form ( blah! ). Mi consiglia di utilizzare quelli forniti da Servizi Entity .
Altri suggerimenti
Non c'è bisogno di andare per un altro modulo, seguente struttura JSON vi aiuterà a creare campo di riferimento del nodo,
"field_specialization":
{
"und":
{
"value":"10"
}
}