I am using an xml rpc client to change a CCK field of an existing node.

I am posting an UTF-8 encoded request, the service responds fine (strings are not altered), but in the database all strings are truncated to their first char.

For example, the string value for "field_ragionesociale", "Ocrim spa" gets saved as "O" in the database, although services.module responds without truncating.

Editing the CCK node value from Drupal interface works normally. so I guess it's a problem from services.

Can you provide some info or workaround?

Thanks,
Pascal.

Here's the post:

POST /drupal/xmlrpc.php HTTP/1.1
Content-Type: text/xml
User-Agent: XML-RPC.NET
Host: 192.168.10.32
Cookie: SESSf8d000ba11a41c85cbb27cd334b78fc0=f7fa217fc31d97ac472660ac60c89555
Content-Length: 22521

<?xml version="1.0" encoding="utf-8"?>
<methodCall>
  <methodName>node.save</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>field_responsabilequalita</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_normequalita</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>type</name>
            <value>
              <string>questionario</string>
            </value>
          </member>
          <member>
            <name>is_new</name>
            <value>
              <boolean>1</boolean>
            </value>
          </member>
          <member>
            <name>format</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>moderate</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>field_principaliattrezzature</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_inps</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_numerooperai</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_servizioprogettazione</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_ragionesociale</name>
            <value>
              <array>
                <data>
                  <value>
                    <string>Ocrim spa</string>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_certificazioni</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>sticky</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>field_superficieoccupata</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>validated</name>
            <value>
              <boolean>1</boolean>
            </value>
          </member>
          <member>
            <name>field_normeprogettazione</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_sedelegale</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>teaser</name>
            <value>
              <string />
            </value>
          </member>
          <member>
            <name>field_postvendita</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_partitaiva</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>vid</name>
            <value>
              <string>49</string>
            </value>
          </member>
          <member>
            <name>field_email</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>email</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_indirizzostabilimento</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>nid</name>
            <value>
              <string>49</string>
            </value>
          </member>
          <member>
            <name>tnid</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>translate</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>comment</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>status</name>
            <value>
              <i4>1</i4>
            </value>
          </member>
          <member>
            <name>field_superficiecoperta</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_descrizioneproduzione</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_rappresentantecommerciale</name>
            <value>
              <array>
                <data>
                  <value>
                    <string>Pippo</string>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>promote</name>
            <value>
              <i4>0</i4>
            </value>
          </member>
          <member>
            <name>title</name>
            <value>
              <string>ProvaPBR</string>
            </value>
          </member>
          <member>
            <name>field_fax</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_notegenerali</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_principaliclienti</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_numeroimpiegati</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_numerodipendenti</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_attivitapostvendita</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_certificazionequalita</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>body</name>
            <value>
              <string />
            </value>
          </member>
          <member>
            <name>uid</name>
            <value>
              <i4>288</i4>
            </value>
          </member>
          <member>
            <name>field_settoremerceologico</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_numerodirigenti</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>changed</name>
            <value>
              <i4>1210231217</i4>
            </value>
          </member>
          <member>
            <name>timestamp</name>
            <value>
              <i4>1210231217</i4>
            </value>
          </member>
          <member>
            <name>created</name>
            <value>
              <i4>1210231217</i4>
            </value>
          </member>
          <member>
            <name>field_capitalesociale</name>
            <value>
              <array>
                <data>
                  <value>
                    <string>1000</string>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_codicefiscale</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_telefono</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>language</name>
            <value>
              <string />
            </value>
          </member>
          <member>
            <name>field_datacompilazione</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                      <member>
                        <name>value2</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_servizioqualita</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_tiposocieta</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>log</name>
            <value>
              <string />
            </value>
          </member>
          <member>
            <name>field_altresedi</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
          <member>
            <name>field_rappresentantelegale</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string />
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>

Here's service response:

HTTP/1.1 200 OK
Date: Thu, 08 May 2008 07:20:18 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Thu, 08 May 2008 07:20:18 GMT
Cache-Control: store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Connection: close
Content-Length: 8641
Content-Type: text/xml

<?xml version="1.0"?>

<methodResponse>
  <params>
  <param>
    <value><struct>
  <member><name>field_responsabilequalita</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_normequalita</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>type</name><value><string>questionario</string></value></member>
  <member><name>is_new</name><value><boolean>0</boolean></value></member>
  <member><name>format</name><value><int>0</int></value></member>
  <member><name>moderate</name><value><int>0</int></value></member>
  <member><name>field_principaliattrezzature</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_inps</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_numerooperai</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_servizioprogettazione</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_ragionesociale</name><value><array><data>
  <value><string>Ocrim spa</string></value>
</data></array></value></member>
  <member><name>field_certificazioni</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>sticky</name><value><int>0</int></value></member>
  <member><name>field_superficieoccupata</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>validated</name><value><boolean>1</boolean></value></member>
  <member><name>field_normeprogettazione</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_sedelegale</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>teaser</name><value><string></string></value></member>
  <member><name>field_postvendita</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_partitaiva</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>vid</name><value><string>49</string></value></member>
  <member><name>field_email</name><value><array><data>
  <value><struct>
  <member><name>email</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_indirizzostabilimento</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>nid</name><value><string>49</string></value></member>
  <member><name>tnid</name><value><int>0</int></value></member>
  <member><name>translate</name><value><int>0</int></value></member>
  <member><name>comment</name><value><int>0</int></value></member>
  <member><name>status</name><value><int>1</int></value></member>
  <member><name>field_superficiecoperta</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_descrizioneproduzione</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_rappresentantecommerciale</name><value><array><data>
  <value><string>Pippo</string></value>
</data></array></value></member>
  <member><name>promote</name><value><int>0</int></value></member>
  <member><name>title</name><value><string>ProvaPBR</string></value></member>
  <member><name>field_fax</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_notegenerali</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_principaliclienti</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_numeroimpiegati</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_numerodipendenti</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_attivitapostvendita</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_certificazionequalita</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>body</name><value><string></string></value></member>
  <member><name>uid</name><value><int>288</int></value></member>
  <member><name>field_settoremerceologico</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_numerodirigenti</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>changed</name><value><int>1210231218</int></value></member>
  <member><name>timestamp</name><value><int>1210231218</int></value></member>
  <member><name>created</name><value><int>1210231218</int></value></member>
  <member><name>field_capitalesociale</name><value><array><data>
  <value><string>1000</string></value>
</data></array></value></member>
  <member><name>field_codicefiscale</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_telefono</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>language</name><value><string></string></value></member>
  <member><name>field_datacompilazione</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
  <member><name>value2</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_servizioqualita</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_tiposocieta</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_altresedi</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
  <member><name>field_rappresentantelegale</name><value><array><data>
  <value><struct>
  <member><name>value</name><value><string></string></value></member>
</struct></value>
</data></array></value></member>
</struct></value>
  </param>
  </params>
</methodResponse>

Comments

skaaal’s picture

Status: Active » Closed (fixed)

The problem came from my request, CCK is expecting a different array structure for its fields

Here's the correct way of submitting CCK fields:

<member>
            <name>field_ragionesociale</name>
            <value>
              <array>
                <data>
                  <value>
                    <struct>
                      <member>
                        <name>value</name>
                        <value>
                          <string>Ocrim spa</string>
                        </value>
                      </member>
                    </struct>
                  </value>
                </data>
              </array>
            </value>
          </member>