2010-08-20 11 views
1

J'essaie d'accéder à la méthode getListItems du service Listes de Sharepoint à partir de Flex à l'aide de WebService.Problème d'accès au service Sharepoint depuis Flex

Cela fonctionne correctement lorsque j'omets la requête et les nœuds viewFields dans le fichier XML de la requête. Mais si j'ajoute une requête ou FieldRef dans Viewfields, il lance une erreur du service.

Ci-dessous le code.

<mx:WebService id="ws2" wsdl="{url}/_vti_bin/Lists.asmx?WSDL" result="ws2result(event)" fault="ws2fault(event)" showBusyCursor="true">  
     <mx:operation name="GetListItems" resultFormat="e4x"> 
      <mx:request xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
       <listName>{listId}</listName> 
       <viewName>{viewId}</viewName> 
       <ViewFields><FieldRef Name='Locations'/></ViewFields> 
      </mx:request> 
     </mx:operation> 
    </mx:WebService> 

Cela fonctionne correctement sans ViewFields. Pouvons-nous utiliser les ViewFields et interroger à partir de flex?

Existe-t-il un moyen d'obtenir la somme d'éléments satisfaisant à des conditions spécifiques en utilisant ce service?


Appliqué le nouveau format. Mais toujours son erreur de lancer.

Le message SOAP capturé à partir de fiddler.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <SOAP-ENV:Body> 
    <tns:GetListItems xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/"> <tns:listName>{0A1C8CDA-E738-46B7-923D-1D2C599D960F}</tns:listName> 
    <tns:viewFields> 
    <tns:Name>ID</tns:Name> 
    </tns:viewFields> 
    </tns:GetListItems> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

Mais le message dans la balise d'opération est transmis comme ci-dessous.

<mx:operation name="GetListItems" > 
      <mx:request xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
       <listName>\{0A3C3DCA-E744-46C7-916D-1D2C539A960F\}</listName> 
     <viewFields> 
      <ViewFields> 
       <FieldRef Name="ID" /> 
      </ViewFields> 
     </viewFields> 
    </mx:request> 
</mx:operation> 
+0

Essayez d'ajouter un attribut 'format' à l'élément de requête:' ' – CBono

+0

Merci beaucoup CBono . J'ai ajouté le format = "xml" et son fonctionnement maintenant. –

Répondre

1

Je ne peux pas dire à coup sûr sans voir un échantillon du message SOAP réelle va sur le fil, mais je crois que vous manquez quelques éléments contenant à la demande.

Pour votre requête, il doit être structuré comme:

<query> 
    <Query> 
    <{CAML QUERY HERE}> 
    </Query> 
</query> 

Notez le cas du contenant <query>. On connaît la chanson, vers différents pour ViewFields:

<viewFields> 
    <ViewFields> 
    <FieldRef Name="foo" /> 
    </ViewFields> 
</viewFields> 

QueryOptions doivent également être contenus dans un élément <queryOptions>. Crazy SharePoint!

+0

Merci CBono. J'ai essayé le nouveau format. Pourtant, il donne une erreur. J'ai vérifié le message SOAP avec fiddler. Cela montre une différence par rapport au format réel. J'ai modifié la question pour ajouter le message SOAP actuel. Je pense que flex fait du formatage automatique sur le message. Est-ce le problème? Est-il possible d'éviter le formatage automatique? –

Questions connexes