IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

REST Service avec Razor


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Par défaut REST Service avec Razor
    Bonjour,

    afin d'en apprendre un peu plus sur les services REST je lis actuellement le tutorial suivant : http://www.microsoft.com/web/post/co...h-aspnet-razor

    J'ai une erreur a l'execution de la page.

    Voici le code Weather.cshtml (situe dans le dossier App_Code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    @functions{
        private static string WeatherService = "http://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php?listLatLon={0}&format=24+hourly&numDays=1";
        private static string ZipcodeService = "http://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdXMLclient.php?listZipCodeList={0}";
     
        public class Temperature
        {
            public string Zip { get; set; }
            public string Latitude { get; set; }
            public string Longitude { get; set; }
            public int MaxTemp { get; set; }
            public int MinTemp { get; set; }
            public string Forecast { get; set; }
        }
     
        private static string GetCoordinates(string zipcode){
            string serviceURL = string.Format(ZipcodeService, zipcode);
            string dwml = string.Empty;
     
            System.Net.WebClient webClient = new System.Net.WebClient();
            dwml = webClient.DownloadString(serviceURL);
     
            System.Xml.Linq.XDocument xdoc = System.Xml.Linq.XDocument.Parse(dwml);
            var coordinates = xdoc.Descendants("latLonList").FirstOrDefault();
            if(coordinates == null)
                return string.Empty;
            else
                return coordinates.Value;
        }
     
        private static Temperature GetWeather(string zipcode){
            string coordinates = GetCoordinates(zipcode);
            if(coordinates == string.Empty){
                return new Temperature();
            }
            string serviceURL = string.Format(WeatherService, coordinates);
            string dwml = string.Empty;
     
            System.Net.WebClient webClient = new System.Net.WebClient();
            dwml = webClient.DownloadString(serviceURL);
            return XmlToTemperature(dwml, coordinates, zipcode);
        }
     
        private static Temperature XmlToTemperature(string xml, string coordinates, string zipcode){
            System.Xml.Linq.XDocument xdoc = System.Xml.Linq.XDocument.Parse(xml);
     
            var maxTemp = from t in xdoc.Descendants("temperature").Elements("value")
                          where t.Parent.Attribute("type").Value == "maximum"
                          select t;
     
            var minTemp = from t in xdoc.Descendants("temperature").Elements("value")
                           where t.Parent.Attribute("type").Value == "minimum"
                           select t;
     
            var max = maxTemp.FirstOrDefault().Value;
            var min = minTemp.FirstOrDefault().Value;
     
            string forecast = xdoc.Descendants("weather-conditions").Attributes("weather-summary").FirstOrDefault().Value;
            string[] lonlat = coordinates.Split(',');
     
            Temperature temp = new Temperature();
            temp.MaxTemp = Convert.ToInt32(max);
            temp.MinTemp = Convert.ToInt32(min);
            temp.Zip = zipcode;
            temp.Latitude = lonlat[0];
            temp.Longitude = lonlat[1];
            temp.Forecast = forecast;
     
            return temp;
        }
    }
    et Default.cshtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    @{
        var temp = Weather.GetWeather("98052");
    }
     
    <!DOCTYPE html>
     
    <html lang="fr">
     <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <meta charset="utf-8" />
            <title>Titre de mon site</title>
            <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        </head>
        <body>
            <ol>
                <li>Zip code: @temp.Zip</li>
                <li>High: @temp.MaxTemp</li>
                <li>Low: @temp.MinTemp</li>
                <li>Forecast: @temp.Forecast</li>
                <li>Longitude: @temp.Longitude</li>
                <li>Latitude: @temp.Latitude</li>
            </ol>
        </body>
    </html>
    Le message d'erreur :
    CS1061: 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' ne contient pas une définition pour 'Elements' et aucune méthode d'extension 'Elements' acceptant un premier argument de type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)
    Ligne d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maxTemp = from t in xdoc.Descendants("temperature").Elements("value")
    Quelqu'un peut-il m'aider? Je ne comprend pas comment arranger cela... J'ai pourtant suivi les indications du tuto...

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Bonjour,
    A priori il manque une directive using vers System.Xml.Linq (dans le code ou dans le fichier de config)
    Ienumerable.Elements

  3. #3
    Membre éprouvé Avatar de Olivier P.
    Homme Profil pro
    Développeur Front-End chez un éditeur logiciel
    Inscrit en
    Octobre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Front-End chez un éditeur logiciel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 83
    Par défaut
    Bonjour,

    Je te suggère de mettre un point d'arrêt sur ta méthode GetWeather et de dérouler en debug mode dans un premier temps.

    Tiens nous au courant,

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Par défaut
    Il semblerait effectivement que la methode GetWeather ne renvoie pas le xml voulu a parser... d'ou l'erreur.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Par défaut
    Merci dkmix... effectivement, il manquait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @using System.Xml.Linq;
    en haut de ma page Weather.cshtml

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2015, 22h07
  2. Réponses: 1
    Dernier message: 03/03/2015, 15h47
  3. modéliser des web services Rest développé avec php5
    Par bahloula dans le forum Langage
    Réponses: 1
    Dernier message: 13/04/2014, 08h04
  4. invoquer web service avec la méthode Rest avec l'URL
    Par belfafi dans le forum Services Web
    Réponses: 0
    Dernier message: 17/09/2012, 22h04
  5. Problème d'encodage fichier JSON avec WCF REST Service
    Par Spikuria dans le forum Services Web
    Réponses: 0
    Dernier message: 09/03/2012, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo