none
Lists WebService (problème paramètre Xml Node & Soap) RRS feed

  • Question

  •  

    Bonjour,

     

    Pour info : je voudrais appeler le service web (lists.asmx) à partir d'une page php en utilisant la bibliothèque Nusoap.

    Et plus précisément la méthode UpdateListItems du webservice.

     

    Or cette méthode prend en paramètre un string et un complexType (en .net on utilise un XmlNode pour le complexType).

     

    <s:element minOccurs="0" maxOccurs="1" name="listName" type="s: string" />

    <s:element minOccurs="0" maxOccurs="1" name="updates">
    <s:complexType mixed="true">
    <s: sequence>
     <s:any />
       </s: sequence>
        </s:complexType>
           </s:element>
    </s:element>

     

    Le problème c'est qu'avec php (nusoap), on n'a pas d'objet XmlNode et j'essaye de passer un batch comme celui la

    <Batch OnError="Continue" ListVersion="1"
    ViewName="---">
       <Method ID="1" Cmd="Update">
          <Field Name="ID">4<Field>
          <Field Name="Field_Name">Value</Field>
       </Method>
       <Method ID="2" Cmd="Update">
          <Field Name="ID" >6</Field>
          <Field Name="Field_Name">Value</Field>
       </Method>
    </Batch>

     

    mais çà ne marche pas.

     

    Je sais que c'est plus un problème php mais je le pose quand même au cas où vous auriez des idées.

     

    PS : en fait j'ai un site web en php sur lequel les utilisateurs s'inscrivent ... je veux récupérer les informations saisis par ces utilisateurs et les stocker aussi dans l'intranet WSS 3.0. Ainsi, dans la page php de registerUsers, je veux appeler le webservice SharePoint pour rajouter les nouveaux éléments correspondants dans la liste correpsondante dans SharePoint.

    (Le site web et le site intranet SharePoint sont sur 2 serveurs différents ).

     

    Merci d'avance.

     

    mercredi 11 juin 2008 10:42

Réponses

  •  

    Bonjour,

     

    Merci pour ta réponse. En fait, j'ai pensé à cette méthode mais j'ai eu des problèmes à faire passer les credentials.

     

    Ceci étant, j'ai trouvé la solution pour appeler le webservice SharePoint (Lists.asmx) directement à partir de php avec la librairie NuSoap.

     

    Il faut juste appeler la méthode : SoapClient->call("NomMethode","Envelope SOAP de la méthode");

     

    Exemple :

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    $UserName="kk";

    $Password= "bb";

    $Wsdl = "http://server/_vti_bin/Lists.asmx?WSDL";

    $client = new soapclient($Wsdl,true);
    $client->setCredentials($UserName,$Password);

     

    $params = '<UpdateListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"> <listName>TEST</listName><updates>Batch OnError="Continue" ListVersion="1" ViewName="guid" xmlns=""><Method ID="1" Cmd="New"><Field Name="ID">New</Field><Field Name="Title">toto</Field></Method></Batch></updates></UpdateListItems>';

     

    $response = $client->call('UpdateListItems',$params);

     

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    vendredi 20 juin 2008 07:51

Toutes les réponses

  •  

    Bonjour

     

    Je n'ai pas de réponse pour la méthode par webservice, par contre je pense que pour ce besoin précis vous pouvez vous appuyer sur les RPC (Remote Procedure Call) qui vous permettront d'effectuer un POST contenant les actions à mener (ajout d'élément).

     

    Vous avez un exemple sur le MSDN : http://msdn.microsoft.com/en-us/library/ms868642.aspx

     

    Il faudra bien sûr l'adapter au php, mais je ne pense pas que ce soit un gros problème.

    jeudi 12 juin 2008 12:04
  •  

    Bonjour,

     

    Merci pour ta réponse. En fait, j'ai pensé à cette méthode mais j'ai eu des problèmes à faire passer les credentials.

     

    Ceci étant, j'ai trouvé la solution pour appeler le webservice SharePoint (Lists.asmx) directement à partir de php avec la librairie NuSoap.

     

    Il faut juste appeler la méthode : SoapClient->call("NomMethode","Envelope SOAP de la méthode");

     

    Exemple :

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    $UserName="kk";

    $Password= "bb";

    $Wsdl = "http://server/_vti_bin/Lists.asmx?WSDL";

    $client = new soapclient($Wsdl,true);
    $client->setCredentials($UserName,$Password);

     

    $params = '<UpdateListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"> <listName>TEST</listName><updates>Batch OnError="Continue" ListVersion="1" ViewName="guid" xmlns=""><Method ID="1" Cmd="New"><Field Name="ID">New</Field><Field Name="Title">toto</Field></Method></Batch></updates></UpdateListItems>';

     

    $response = $client->call('UpdateListItems',$params);

     

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    vendredi 20 juin 2008 07:51