Почему мой метод всегда возвращает ноль? - PullRequest
0 голосов
/ 15 октября 2011
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
          xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">
  <Copyright>Copyright &#xA9; 2011 Microsoft and its suppliers. All rights
   reserved. This API cannot be accessed and the content and any results
   may not be used, reproduced or transmitted in any manner without express
   written permission from Microsoft Corporation.</Copyright>
  <BrandLogoUri>[http://dev.virtualearth.net/Branding/logo_powered_by.png]</BrandLogoUri>
  <StatusCode>200</StatusCode>
  <StatusDescription>OK</StatusDescription>
  <AuthenticationResultCode>ValidCredentials</AuthenticationResultCode>
  <TraceId>50230e70257e4ed5a5002a3d4a625c83|LTSM001156|02.00.159.1700|LTSMSNVM001471, LTSMSNVM001477</TraceId>
  <ResourceSets>
    <ResourceSet>
      <EstimatedTotal>1</EstimatedTotal>
      <Resources>
        <Location>
          <Name>1 Microsoft Way, Redmond, WA 98052</Name>
          <Point>
            <Latitude>47.640568390488625</Latitude>
            <Longitude>-122.1293731033802</Longitude>
          </Point>
          <BoundingBox>
            <SouthLatitude>47.636705672917948</SouthLatitude>
            <WestLongitude>-122.137016420622</WestLongitude>
            <NorthLatitude>47.6444311080593</NorthLatitude>
            <EastLongitude>-122.1217297861384</EastLongitude>
          </BoundingBox>
          <EntityType>Address</EntityType>
          <Address>
            <AddressLine>1 Microsoft Way</AddressLine>
            <AdminDistrict>WA</AdminDistrict>
            <AdminDistrict2>King Co.</AdminDistrict2>
            <CountryRegion>United States</CountryRegion>
            <FormattedAddress>1 Microsoft Way, Redmond, WA 98052</FormattedAddress>
            <Locality>Redmond</Locality>
            <PostalCode>98052</PostalCode>
          </Address>
          <Confidence>Medium</Confidence>
        </Location>
      </Resources>
    </ResourceSet>
  </ResourceSets>
</Response>

Мой запрос ранее выглядел так:

private void getData()
{
    // Api letőltése
    WebClient webClient = new WebClient();

    string url = "http://dev.virtualearth.net/REST/v1/Locations/" 
                 + _location + "?o=xml&key=App-asdf";

    webClient.DownloadStringCompleted += (s, e) =>
        {
            if (e.Error != null)
                return;

            XDocument xmlLocation = XDocument.Parse(e.Result);

            var ns = XNamespace.Get("http://schemas.microsoft.com/search/local/ws/rest/v1");
            var locality = from q in xmlLocation.Descendants(ns + "Address")
                           select (string)q.Element(ns + "Locality").Value;
        };

    webClient.DownloadStringAsync(new Uri(url));
}

Почему он всегда возвращает null?

Я хочу запросить местность, но моя переменная всегда содержит null,Недавно я написал похожий программный код, который работал, но теперь у него есть пространство имен, и я не понимаю, в чем проблема.

Ответы [ 2 ]

1 голос
/ 15 октября 2011

Я только что выполнил ваш запрос по указанному XML, и он выдает "Redmond".

Итак: сломай это. У вас проблема со связью или многопоточностью.

    if (e.Error != null)
                return;

Это хороший способ подмести проблему под ковром.

0 голосов
/ 15 октября 2011
var locality = xmlLocation.Descendants(ns + "Locality").Select( x => x.Value);
...