2017-06-08 1 views
1

Im commencer un nouveau projet d'application Web avec HTML simple, CSS et Angular. Nous utilisons des services Web existants pour extraire des données de certains serveurs, un service que nous essayons d'utiliser est un service public: Global Weather SOAP ServiceEnvoyer une requête SOAP via HTTP avec Angular?

Existe-t-il un moyen "facile" de faire la demande avec Angular? En fait, notre code « test » est ce (avec JQuery, ne fonctionne toujours pas), mais il serait préférable de mettre en œuvre l'approche angulaire avec HTTP ou RxJS ...

import { Injectable } from '@angular/core'; 
import * as $ from 'jquery'; 

@Injectable() 
export class SoapServiceProvider { 

    constructor() { } 

    testingSoapRequest() { 

     $.ajax({ 
      url: 'http://www.webservicex.net/globalweather.asmx?op=GetCitiesByCountry', 
      data: { CountryName: 'Spain' }, 
      success: (data) => { 
       console.log('Hey, we got a success response', data); 
      }, 
      error: (err) => { 
       console.error('We got an error :(', err); 
      } 
     }); 

    } 

} 

Je ne l'ai jamais utilisé JQuery pour faire des demandes de n'importe quel type (je viens d'utiliser $ http dans AngularJS et RxJS avec Angular), donc je ne sais pas vraiment la bonne façon de le rendre possible.

Remarque: Il existe une bibliothèque pour faire des requêtes SOAP Angular dans GitHub mais il semble que cela ne marche plus avec les nouvelles versions Angular.

This is the GitHub Autopulous SOAP link...

+1

Angular a HttpModule pour les appels REST similaires aux appels JQuery Ajax, vous pouvez en lire plus à ce sujet [ici] (https://angular.io/docs/ts/latest/guide/server-communication.html) –

Répondre

1

Tout d'abord, ne pas utiliser jQuery, angulaire vous offre tout ce dont vous avez besoin de la boîte et il est trop rapide et généralement plus puissants.

Voici un exemple ionique page, effectuer des requêtes http:

Cette logique pourrait être accroché à un modèle simple comme celui-ci:

<ion-navbar *navbar> 
    <ion-title> 
     Home 
    </ion-title> 
</ion-navbar> 

<ion-content class="home"> 
    <button (click)="makeGetRequest()">GET Request</button> 
    <button (click)="makePostRequest()">POST Request</button> 
</ion-content> 

Maintenant, puisque vous utilisez la messagerie SOAP, vous aurez besoin de convertir JSON en XML compatible SOAP et de le déconstruire de la même façon quand vous aurez une réponse.

Je fortement vous conseille de ne pas utiliser SOAP parce que, malgré le fait que ce soit un plus tecnologie, les messages sont beaucoup plus grandes en raison de code plus verbeux nécessaire pour annoter les mêmes données et surtout, la conversion JSON -> XML est lent, surtout en Javascript.

Cela étant dit, voici un very popular library pour convertir entre les deux types.

+0

Merci @maninak, ceci est mon code pour consommer un autre service SOAP mais ne fonctionne toujours pas. ' this.http .post ('http: // localhost: 9000/OurService.svc /', '{login = "testuser", mot de passe = "pwd123", deviceType = "iOS"}', les options) .subscribe (data => { console.log ('Post de réussite ...', JSON.stringify (données)); }, erreur => { console.log ('Erreur :(', erreur) }); L'erreur que j'obtiens est 404 Non trouvé Y at-il un moyen de spécifier la méthode Web à invoquer? –

+0

@JuanJoseAdan Vous obtenez un 404 car il y a une erreur à l'url et par que je veux dire 'localhost: 9000/OurService.svc /'. Ce qui signifie que la partie réseau de la demande est functionin g correctement. Donc, si ma réponse a couvert votre question s'il vous plaît marquez la réponse pour la fermer. – maninak