2

J'essaie d'utiliser node-soap pour communiquer avec Amazon Mechanical Turk. J'initialise le client de savon avec this wsdl mais quand j'essaye d'appeler client.<SomeOperation>(...) pour any of the operations listed in the Mechanical turk API, j'ai trouvé que les réponses que j'obtenais n'ont pas contenu les résultats de l'appel d'API. The API documentation says that the response should contain a "Result element", mais je trouve que je recevais des résultats inutiles qui ressemblaient à ceci:node-soap envoie uniquement des requêtes "Help" à Mechanical Turk?

<HelpResponse xmlns="http://requester.mturk.amazonaws.com/doc/2014-08-15"> 
    <OperationRequest> 
     <RequestId>(something)</RequestId> 
    </OperationRequest> 
    <Information> 
     <Request> 
      <IsValid>True</IsValid> 
     </Request> 
     <OperationInformation> 
      <Name>Please see our online documentation at http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=28</Name> 
     </OperationInformation> 
    </Information> 
</HelpResponse> 

Après enquête, je trouve que le problème est dans ce nœud-savon envoie lorsque je tente de l'utiliser pour faire des demandes de l'API . Quand je tente d'appeler, dire RegisterHITType, plutôt que d'envoyer un élément <RegisterHITType>, il semble envoyer une sorte d'élément <Help> à la place, qui ressemble à ceci:

<Help xmlns="http://requester.mturk.amazonaws.com/doc/2014-08-15"> 
    <Title>(something)</Title> 
    <Description>(something)</Description> 
    <Reward>(something)</Reward> 
    <AssignmentDurationInSeconds>(something)</AssignmentDurationInSeconds> 
    <AWSAccessKeyId>(something)</AWSAccessKeyId> 
    <Timestamp>(something)</Timestamp> 
    <Service>AWSMechanicalTurkRequester</Service> 
    <Signature>(something)</Signature> 
</Help> 

Pourquoi faut-il envoyer la place de l'API attendue demande? Est-ce le résultat d'un problème ou est-ce que je me méprends sur la façon d'utiliser le noud-savon? Existe-t-il un moyen de contourner ce problème ou dois-je envisager d'utiliser l'API Mechanical Turk par d'autres moyens?

Répondre

0

J'ai trouvé que le noeud-savon peut avoir un bug.

Essayez d'utiliser 'soap ui' pour appeler les services Web par vous-même afin de vous assurer que ce service Web fonctionne correctement. (télécharger le code-barre ici https://www.soapui.org)

Si les services Web fonctionnent correctement, le problème est la bibliothèque node-soap. Vous pouvez contourner le problème en générant un message de demande de savon et appeler le service directement.

+0

Merci pour la réponse. Depuis, je suis passé à l'utilisation de l'api de repos pour ce service particulier (et ça marche très bien), donc pour être honnête, je ne pense pas que je vais prendre le temps d'essayer le soap-ui pour le tester. Aidez-moi – vijrox