Reputation: 2565
I'm testing XML-RPC to create a node to drupal using Post Man (chrome extension) and successfully done receiving 200 OK. But the problem is a specific field called "field_answer_with_image
" is still blank in the node I created. I think something is wrong with my structure.
Here's taxonomy of field_answer_with_image
.
Here's my xml structure for creating the node.
<?xml version="1.0" encoding="UTF-8"?><methodCall>
<methodName>node.create</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>field_category</name>
<value>
<struct>
<member>
<name>und</name>
<value>
<array>
<data>
<value>
<string>23</string>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>field_email</name>
<value>
<string>[email protected]</string>
</value>
</member>
<member>
<name>body</name>
<value>
<struct>
<member>
<name>und</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>value</name>
<value>
<string>test yoo</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>type</name>
<value>
<string>question</string>
</value>
</member>
<member>
<name>field_answer_with_image</name>
<value>
<struct>
<member>
<name>und</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>filemime</name>
<value>
<string>image/jpeg</string>
</value>
</member>
<member>
<name>
title
</name>
<value>
<string>
</string>
</value>
</member>
<member>
<name>filename</name>
<value><string>GW_temp.jpeg</string></value>
</member>
<member>
<name>status</name>
<value><string>1</string></value>
</member>
<member>
<name>fid</name>
<value><string>1611</string></value>
</member>
<member>
<name>height</name>
<value><string></string></value></member>
<member>
<name>width</name><value><string></string></value></member><member>
<name>timestamp</name><value><string>1469009864</string></value></member><member>
<name>filesize</name><value><string>10664</string></value></member><member>
<name>uid</name><value><string>1543</string></value></member><member>
<name>alt</name><value><string></string></value></member><member>
<name>rdf_mapping</name><value><string></string></value></member><member>
<name>uri</name><value><string>public://GW_temp_1.jpeg</string></value></member>
</struct>
</value>
</data>
</array>
</value>
</member></struct></value></member>
<member><name>field_name</name><value><string>cristy</string></value></member></struct></value></param>
Upvotes: 0
Views: 73
Reputation: 11
You need to create the image first, then create the node using the file ID in a second step.
Step 1:
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>file.create</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>filename</name>
<value>
<string>Dummy.jpg</string>
</value>
</member>
<member>
<name>filesize</name>
<value>
<int>440048</int>
</value>
</member>
<member>
<name>file</name>
<value>
<string>$BASE64$</string>
</value>
</member>
<member>
<name>filepath</name>
<value>
<string>public://Dummy.jpg</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
This returns you an XML value with an 'fid' field. Find its matching 'value', an integer.
Then to create the node in step 2 (assume fid = 170):
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>node.create</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>type</name>
<value>
<string>dummy_content_type</string>
</value>
</member>
<member>
<name>title</name>
<value>
<string>Dummy> 123456</string>
</value>
</member>
<member>
<name>field_dummy</name>
<value>
<struct>
<member>
<name>und</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>type</name>
<value>
<string>image</string>
</value>
</member>
<member>
<name>fid</name>
<value>
<string>170</string>
</value>
</member>
<member>
<name>uid</name>
<value>
<string>1</string>
</value>
</member>
<member>
<name>filename</name>
<value>
<string>Dummy.jpg</string>
</value>
</member>
<member>
<name>filesize</name>
<value>
<string>44408</string>
</value>
</member>
<member>
<name>filepath</name>
<value>
<string>public://Dummy.jpg</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
This will return a node ID similarly to the previous post request.
Works in Drupal 7.
Upvotes: 1