如何使用BING REST Api

时间:2014-04-08 07:31:57

标签: c# asp.net rest bing-api

你究竟如何使用BING REST api(特别是ROUTES部分)在ASP.NET中获得行车距离。

我已经在谷歌上搜索了这个答案,但没有一个是即将发布的。

我找到了url字符串,例如:

http://dev.virtualearth.net/REST/v1/Routes/Driving?waypoint.0=redmond&heading=90&waypoint.1=seattle&du=mi&key=BingMapsKey

太棒了!但是如何从ASP调用呢?

我也找到了这段代码:

 private void GetResponse(Uri uri, Action<HttpResponse> callback)
    {
        WebClient wc = new WebClient();
        wc.OpenReadCompleted += (o, a) =>
        {
            if (callback != null)
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(HttpResponse));
                callback(ser.ReadObject(a.Result) as HttpResponse);
            }
        };
        wc.OpenReadAsync(uri);
    }

这是“发布网络请求的通用方法”。但是,再次,你怎么称呼它?我发现它不需要返回类型令人困惑。

为了调用它,我找到了这样的代码:

string key = "YOUR_BING_MAPS_KEY or SESSION_KEY";
    string query = "1 Microsoft Way, Redmond, WA";

    Uri geocodeRequest = new Uri(string.Format("http://dev.virtualearth.net/REST/v1/Locations?q={0}&key={1}", query, key));
    GetResponse(geocodeRequest, (x) =>
    {
        Console.WriteLine(x.ResourceSets[0].Resources.Length + " result(s) found.");
        Console.ReadLine();
    });

但是当我将这个添加到项目中时,我会在阳光下出现每一个错误。所以,我被卡住了。

我是一个完整的ASP初学者,并没有找到任何帮助的在线文档。

P.S。我有一个BING api密钥,并在上面的代码中使用它。

1 个答案:

答案 0 :(得分:1)

我不是这方面的专家,但下面为我编译。还要确保添加BING文档中提到的数据结构:

protected void Page_Load(object sender, EventArgs e)
{
    string key = "YOUR KEY";
    string query = "ADDRESS";

    Uri geocodeRequest = new Uri(string.Format("http://dev.virtualearth.net/REST/v1/Locations?q={0}&key={1}", query, key));

    GetResponse(geocodeRequest, (x) =>
    {
        Console.WriteLine(x.ResourceSets[0].Resources.Length + " result(s) found.");
        Console.ReadLine();
    });

}

引用另一个stackoverflow问题:


您使用的文档底部指向您在此处提供的REST服务所需的数据合同:http://msdn.microsoft.com/en-us/library/jj870778.aspx

只需创建一个空的C#文件,然后粘贴到C#数据合同中。然后将命名空间添加到此类:

using BingMapsRESTService.Common.JSON;