You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2013-05-24 21:28:17

jonathan.lessard
Member
Registered: 2013-05-24
Posts: 2

Plugin Webservice : méthode updateObjects(fields) via XML RPC en C#

Bonjour,

je suis présentement entrain de faire une application C# et j'utilise le plugin WebServices XML RPC pour communiquer avec GLPI.

La librairie .NET que j'utilise est http://xml-rpc.net/

j'essaie donc de représenter le code php suivant en C#:

['fields'] = array(
   'Computer'=>array(   
                        array('id'=>30,
                              'serial'=>'J87G-FDZF-970',
                              'comment'=>'Commentaire 1',
                              'otherserial'=>'000094'),

                        array('id'=>31,
                              'serial'=>'5454542-029475',
                              'comment'=>'Commentaire 2',
                              'otherserial'=>'000096')
                  ),
   'Monitor'=>array(   
                        array('id'=>7,
                              'serial'=>'12133432RE2R2'),
                        array('id'=>8,
                              'serial'=>'4234-43-EFZ-434')
                  )
);

Voilà ce que j'ai fait :

public void updateObjects(List<GLPIObject> glpiObjects)
        {
            XmlRpcStruct[] fields = new XmlRpcStruct[1];
            XmlRpcStruct[] objects = new XmlRpcStruct[glpiObjects.Count()];
            
            int i = 0;
            foreach (GLPIObject glpiObject in glpiObjects)
            {
                XmlRpcStruct anObject = new XmlRpcStruct();
                anObject.Add("id", glpiObject.getId());
                anObject.Add("serial", glpiObject.getSerial());
                anObject.Add("comment", glpiObject.getComment());
                anObject.Add("otherserial", glpiObject.getOtherSerial());
                objects[i] = anObject;
                i++;
            }

            fields[0] = new XmlRpcStruct();
            fields[0].Add("Computer", objects);

            mGLPIProxy.updateObjects(fields);

        }

Malheureusement j'obtiens l'erreur suivante dans le "apache_error.log" :


[Fri May 24 11:01:34 2013] [error] [client 127.0.0.1] PHP Fatal error:  Class name must be a valid object or a string in C:\\wamp\\www\\glpi83\\plugins\\webservices\\inc\\methodinventaire.class.php on line 981

car le $itemtype vaut 0 (semble être l'index de l'array pour la valeur "Computer")

Est-ce que quelqu'un a un idée ou a déjà implémenté updateObjects en C#?

Merci

Offline

#2 2013-05-24 21:56:23

jonathan.lessard
Member
Registered: 2013-05-24
Posts: 2

Re: Plugin Webservice : méthode updateObjects(fields) via XML RPC en C#

J'ai finalement trouvé... J'ai éliminer les array.

Problème résolu, merci quand même.

Solution:

public void updateObjects(List<GLPIObject> glpiObjects)
        {
            XmlRpcStruct fields = new XmlRpcStruct();
            XmlRpcStruct objects = new XmlRpcStruct();
            
            int i = 0;
            foreach (GLPIObject glpiObject in glpiObjects)
            {
                XmlRpcStruct anObject = new XmlRpcStruct();
                anObject.Add("id", glpiObject.getId());
                anObject.Add("serial", glpiObject.getSerial());
                anObject.Add("comment", glpiObject.getComment());
                anObject.Add("otherserial", glpiObject.getOtherSerial());
                objects.Add("", anObject);
                i++;
            }

            fields.Add("Computer", objects);
            

            mGLPIProxy.updateObjects(fields);

        }

Offline

Board footer

Powered by FluxBB