首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DownloadString未被执行

DownloadString未被执行
EN

Stack Overflow用户
提问于 2013-02-16 04:52:41
回答 2查看 642关注 0票数 0

我是C#.Net编程的新手,面临着一个问题。当我调用getLocation函数时,我总是得到"location“为空。我知道我做事情的方式是错误的。但如果有人能帮助我以正确的方式做这件事,那就太好了。我希望getLocation函数返回位置值。因此,它应该只在返回位置值之前执行wc.downloadString时才返回。

代码语言:javascript
复制
public String getLocation()
{
    RetrieveFormatedAddress(latitude, longitutde);
    location = returnVal;
    return location;
}

static void RetrieveFormatedAddress(string lat, string lng)
{
    string requestUri = string.Format(baseUri, lat, lng);

    using (WebClient wc = new WebClient())
    {
        wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
        wc.DownloadString(new Uri(requestUri));
        //wc.DownloadStringAsync(new Uri(requestUri));
    }
}

private static void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    var xmlElm = XElement.Parse(e.Result);

    var status = (from elm in xmlElm.Descendants()
                  where elm.Name == "status"
                  select elm).FirstOrDefault();
    if (status.Value.ToLower() == "ok")
    {
        var res = (from elm in xmlElm.Descendants()
                   where elm.Name == "formatted_address"
                   select elm).FirstOrDefault();
        returnVal = res.Value;
    }
    else
    {
        returnVal = "No Address Found";
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-16 04:56:33

代码语言:javascript
复制
public String getLocation()
{
    return RetrieveFormatedAddress(latitude, longitutde);
}

static string RetrieveFormatedAddress(string lat, string lng)
{
    string requestUri = string.Format(baseUri, lat, lng);

    using (WebClient wc = new WebClient())
    {
        var result = wc.DownloadString(new Uri(requestUri));
        var xmlElm = XElement.Parse(result);

        var status = (from elm in xmlElm.Descendants()
              where elm.Name == "status"
              select elm).FirstOrDefault();
        if (status.Value.ToLower() == "ok")
        {
        var res = (from elm in xmlElm.Descendants()
               where elm.Name == "formatted_address"
               select elm).FirstOrDefault();
            return res.Value;
        }
        else
        {
            return "No Address Found";
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2013-02-16 04:58:25

DownloadString()方法是DownloadStringAsync()方法的同步版本。它以字符串的形式返回从服务器下载的数据。在您的代码中,您不会在任何地方读取此值。尝试使用var data = wc.DownloadString(new Uri(requestUri));获取数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14903150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档