Auteur : Dflying Chen ( http://dflying.cnblogs.com/ )
Dans l'article précédent (Appel d'un service Web dans ASP.NET Atlas - Création d'un mashup pour appeler un service Web distant (connaissances de base et exemple simple)), j'ai présenté quelques connaissances de base sur un mashup pour un service Web distant dans Atlas et j'ai donné un exemple des plus élémentaires. cela ne sert à rien du tout. Revenant sur ce sujet aujourd'hui, je vais donner un exemple plus complexe, mais quelque peu utile : Yahoo Weather.
Assez de bêtises, familiarisons-nous d'abord avec le service Yahoo! Weather : Yahoo! propose un service de prévisions météo sur son site Web ( http://weather.yahoo.com/ ), ainsi qu'une interface de service Web ( http :/ /developer.yahoo.com/weather/ )
À partir des deux pages Web ci-dessus, nous pouvons savoir que l'URL du service météo fourni par Yahoo! est http://xml.weather.yahoo.com/forecastrss . Le service a également deux paramètres :
p : le code de localisation où se trouve le site. la météo doit être interrogée (vous pouvez vérifier ce code à différents endroits sur http://weather.yahoo.com/ ).
u : l'unité de température dans le résultat renvoyé, f représente Fahrenheit et c représente Celsius.
Il semble que ce service Yahoo! Météo soit assez simple. Testons s'il fonctionne bien. Allez d’abord sur http://weather.yahoo.com/ et découvrez que le code de localisation de Shanghai est CHXX0116. Entrez ensuite http://xml.weather.yahoo.com/forecastrss?p=CHXX0116&u=c dans le navigateur. Eh bien, le XML suivant, pas très compliqué, est renvoyé :
Résultat XML du service météo Yahoo.
http://us.rd.yahoo.com/dailynews/rss/weather/Shanghai__CH/*http://xml.weather.yahoo.com/forecast/CHXX0116_c.html
http://weather.yahoo.com/
<élément>
http://us.rd.yahoo.com/dailynews/rss/weather/Shanghai__CH/*http://xml.weather.yahoo.com/forecast/CHXX0116_c.html
" />
Conditions actuelles :
Brouillard, 21 C
Prévision :
Jeu - Orages épars Maximum : 25 Minimum : 20
Du vendredi au matin. Averses. Haute : 26. Basse : 18.
Prévisions complètes sur Yahoo! Météo
(fourni par The Weather Channel)
]]>
On voit que les informations qu'il fournit sont très complètes (même les heures de lever et de coucher du soleil... ), écrivons la page asbx Bridge pour Mashup ce service.
Tout d'abord, en nous référant à l'instruction asbx dans l'article Appel d'un service Web dans ASP.NET Atlas - Création d'un mashup pour appeler un service Web distant (connaissances de base et exemple simple), nous pouvons écrire le paragraphe suivant :
dans:
Les attributs namespace et className de
L'attribut serviceUrl de
La méthode GetWeather définit les deux paramètres p et u répertoriés ci-dessus. Nous avons spécifié la valeur par défaut du paramètre u comme c (représentant les degrés Celsius), et le paramètre p sera transmis par l'appelant.
Cette étape est en fait suffisante. Le client recevra la chaîne XML vue dans le navigateur ci-dessus, et elle pourra être traitée et affichée sur le client. Mais le traitement du XML par le client n'est pas si simple ni efficace, et transmettre trop d'informations inutiles sur le réseau est également un gaspillage. Nous utilisons donc ici le Transformer intégré à asbx pour traiter ce XML, extraire le contenu qui nous intéresse et l'envoyer au client sous forme de JSON. Ajoutez le paragraphe suivant à la section
L'instruction
name est un segment d'attribut du sélecteur et l'attribut value spécifié est une expression XPath, qui sélectionnera le segment de données qui sera utilisé par l'ensemble de XPathBridgeTransformer.
name est un segment de dictionnaire de namespaceMapping, qui spécifie le mappage d'espace de noms dans ce fichier XML. Si nous utilisons un certain espace de noms dans le processus de sélection de nœud suivant, alors sa déclaration doit être ici. Ici, nous ajoutons un mappage à yweather, car il sera utilisé ci-dessous.
name est un segment de dictionnaire de selectedNodes, où l'attribut value de chaque élément est une chaîne XPath, utilisée pour sélectionner la valeur correspondante dans XML, et l'attribut name est utilisé pour spécifier le nom de l'attribut correspondant en JavaScript. À titre d'exemple ici, je n'ai obtenu que trois éléments de contenu. Vous pouvez voir que le namespaceMapping spécifié ci-dessus est utilisé dans le XPath de CurrentCondition.
Je n'entrerai pas dans les détails de XPath. Les amis qui sont intéressés ou qui ne le connaissent pas peuvent le rechercher eux-mêmes. Il existe de nombreuses ressources en ligne. Je ne connais pas très bien les autres types de Transformers, j'en parlerai si je les rencontre à l'avenir. Le fichier YahooWeatherBridge.asbx complété est le suivant :
Créez maintenant une page ASP.NET à tester. Tout d'abord, il y a toujours le ScriptManager répété mille fois et une référence à Bridge :
Ensuite, il y a un élément HTML Select, qui répertorie plusieurs villes et les codes de ville correspondants :
Un morceau de HTML est utilisé pour afficher le résultat :
Vient ensuite JavaScript. Vous pouvez voir que Mashup est appelé via Dflying.YahooWeatherService.GetWeather(), et la valeur transformée est affichée sur la page après le retour de la méthode : function getWeather_onclick() {.
// nouveau contrôle atlas 'Select'
var place = new Sys.UI.Select($('place'));
// invoque la méthode bridge
Dflying.YahooWeatherService.GetWeather({'p': place.get_selectedValue()}, onGetComplete);
}
fonction onGetComplete (résultat) {
$('result').style.display = "bloc";
$('titre').innerHTML = résultat[0].Titre;
$('description').innerHTML = résultat[0].Description;
}