2011-02-17 3 views
3

Je développe actuellement un site Web pour le système de transport en commun basé sur l'API Trafikanten (http://reis.trafikanten.no/topp2009/topp2009ws.asmx)utilisant les services Web par AJAX directement

Le site dispose de plusieurs fonctionnalités si c'est le Web Services. Il est implémenté dans le framework .NET avec le format SOAP. Mais nous avons besoin de consommer ses fonctionnalités dans le langage client comme JavaScript pour pouvoir afficher les informations dans la page web. Quelqu'un peut-il suggérer un moyen facile de faire face à ce scénario?

Répondre

2

Pourvu que vous utilisez une pile LAMP:

Je voudrais écrire un script PHP en utilisant la nusoap (http://sourceforge.net/projects/nusoap/) libarary consommer le service et le retour Web SOAP JSON à votre JavaScript via un appel AJAX.

Modifier

Il est encore plus facile dans .NET. Faites un clic droit sur votre projet et choisissez Ajouter un service Web. Ensuite, vous pouvez accéder aux méthodes du service Web comme vous le feriez pour n'importe quel autre objet. En ce qui concerne l'utilisation de JS, vous pouvez implémenter la création d'une page ASP qui affiche les résultats au format JSON, puis l'utiliser en utilisant jQuery comme vous le feriez avec une pile LAMP. Bien que, avec les capacités de post-retour d'ASP, vous feriez mieux de le laisser faire le gros du travail dans JS et de consommer les services Web directement dans votre fichier de code derrière votre vue.

Espérons que cela aide.

+0

Jesse, merci pour vos conseils mais je ne peux pas utiliser cette bibliothèque car notre site web n'est pas basé sur PHP il est basé sur ASP. d'autres alternatives ...? Merci à l'avance -neo – Neo182

+0

@ Neo182 - Voir ma modification. –

+0

@ Neo182, désolé j'ai complètement raté la réponse de Dave. –

0

Je l'ai déjà fait dans le passé, comme le dit Jesse, mais avec .NET. Je construis un "service composé" ou un service d'adaptateur qui appelle ensuite les autres services. Le service composé communiquerait SOAP avec les services .NET tandis que votre application communiquerait JSON avec votre service composé.

1

Si le service ne prend pas en charge JSONP, ce qui n'est probablement pas le cas en tant que service ASMX, vous devez créer un proxy de service à exécuter sur votre serveur Web local. Ensuite, utilisez ce service local pour agir en tant qu'intermédiaire qui contourne la limitation inter-domaine du navigateur.

Si vous avez ajouté une référence de service à Top2009WS dans votre projet ASP.NET, quelque chose comme cela pourrait agir comme un proxy côté serveur pour GetLines() par exemple:

[WebMethod] 
public Line[] GetLines(int ID) { 
    var client = new Topp2009WS.Topp2009WSSoapClient(); 

    client.open(); 

    return client.GetLines(ID); 
} 

Ensuite, vous pouvez appeler par le proxy comme celui-ci sur le côté client:

$.ajax({ 
    url: 'Service.asmx/GetLines', 
    type: 'POST', 
    dataType: 'json', 
    contentType: 'application/json', 
    data: '{"ID":' + 12345 + '}', 
    success: function(response) { 
    // Alerts the first result's "LineName" 
    alert(response.d[0].LineName); 
    } 
}); 

Voir cet article pour plus d'informations sur using jQuery to call the web service.

+0

Merci pour les conseils très gentils mais j'ai un petit commentaire sur le dataType. Le type de données est-il uniquement au format JSON? Impossible de spécifier un autre type de données? – Neo182

+0

Il est préférable d'utiliser JSON entre le navigateur et votre serveur Web local. Il va quand même utiliser XML entre le serveur web et le service web distant. –

Questions connexes