【问题标题】:calling another http request upon changing page在更改页面时调用另一个 http 请求
【发布时间】:2014-01-16 15:14:42
【问题描述】:

我正在使用 windows phone 应用程序,我在这里使用 rest places api 来存储我的数据,我以 json 格式检索数据,这些数据可以像这样为我提供有关附近位置的信息

position: [ 37.77704 , -122.39494 ]
distance: 1241
title: Caltrain-San Francisco
averageRating: 0.0
category: { Public transport }
icon: http://download.vcdn.nokia.com/p/d/places2/icons/categories/11.icon
vicinity: 700 4th St<br/>San Francisco, CA 94107
having: [ ]
type: urn:nlp-types:place
href: http://demo.places.nlp.nokia.com/places/v1/places/8409q8yy-a7395cccbfc4474ba469f3ddc03e041b;context=Zmxvdy1pZD00OWQxZDY0Zi0zODc5LTVlNDAtOWY4ZC04ZGFmNWMyMGZhZDFfMTM4OTg4NDQxMzUxNV8wXzM1MjkmcmFuaz0w?app_id=lp3VaO8uhOFe0akZ4J1m&app_code=JwL7MNaSarML92oqEDshAg
id: 8409q8yy-a7395cccbfc4474ba469f3ddc03e041b

我注意到如果我打开

href: http://demo.places.nlp.nokia.com/places/v1/places/8409q8yy-a7395cccbfc4474ba469f3ddc03e041b;context=Zmxvdy1pZD00OWQxZDY0Zi0zODc5LTVlNDAtOWY4ZC04ZGFmNWMyMGZhZDFfMTM4OTg4NDQxMzUxNV8wXzM1MjkmcmFuaz0w?app_id=lp3VaO8uhOFe0akZ4J1m&app_code=JwL7MNaSarML92oqEDshAg

我将进入包含有关该位置的详细信息的其他页面,那么我如何获取所有这些数据?来自该 href 的一般和详细数据

我用来获取一般数据的方法是使用这个

WebClient client = new WebClient();
Uri uri = new Uri(transportURL1 + latitude + "%2C" + longitude + transportURL2, UriKind.Absolute);
client.DownloadStringCompleted += (s, e) =>
{
   if (e.Error == null)
    {
      RootObject result = JsonConvert.DeserializeObject<RootObject>(e.Result);
                        hereRestProperty = new ObservableCollection<Item>(result.results.items);
   }
   else
   {
       MessageBox.Show(e.Error.ToString());
   }
};
client.DownloadStringAsync(uri);

所以我的应用场景是显示一般位置数据的主页,当我点击其中一个位置数据时,它将导航到包含来自该 href 的信息的详细信息页面

怎么做?

编辑:我的工作是获取 href 并使用该 href 来调用 http 请求,但我不知道如何做所有这些......

edit2:环顾四周后,我想出了一个带有一般信息列表的主页的想法,如果我单击列表中的一项,它将导航到将从该 href 请求的详细信息页面,但我只是不知道如何在 mvvm 方法中执行它...

【问题讨论】:

  • 您从查询返回到服务的数据完全由为您提供数据的个人/公司/站点定义。您需要联系他们或查看他们的 API 文档。
  • 我的意思是如何获取href并将其作为另一个http请求
  • 您想自己发出 HTTP 请求,还是将其传递给浏览器为您的用户打开?
  • 自己发出http请求
  • 您需要提供更多信息。你到底想做什么?您已经发出 HTTP 请求以从服务器获取一些 JSON 数据,对这个 URL 执行相同的操作。如果您已经这样做了,您是否在屏幕上显示它时遇到问题?你有什么问题?请清楚你需要什么。另外,请编辑帖子的标题以反映您的问题,因为它也不是很清楚。

标签: c# xaml mvvm windows-phone-8 here-api


【解决方案1】:

如果可以安全地假设您正在尝试通过添加位置功能来为您的应用增加价值,我建议对于 Windows Phone 8,您最好启动 HERE地图直接使用HERE Maps Launchers API

例如,如果您的应用是关于远足小径,那么添加一个功能来查找远足小径附近的饮食或住宿地点的详细信息是有意义的 - 但您不需要创建您自己的代码来请求、格式化和显示深度地点数据,只需启动设备上已有的地图应用程序(如有必要,从初始 REST 请求中传递href)。这样做的好处是三重的,首先您可以在四行代码中添加此功能,其次以熟悉的格式向用户呈现地点信息,最后从设备本身检索信息,从而减少了额外的需要HTTP 请求。

以下一项或多项任务可能有用:

  • ExploremapsShowPlaceTask 允许您启动地图应用程序,其中地图以地图中显示的位置为中心。
  • ExploremapsSearchPlacesTask 允许您使用搜索视图启动地图应用程序。
  • ExploremapsExplorePlacesTask 允许您启动地图应用程序,其中显示附近的景点。
  • PlacesShowDetailsByLocationTask 允许您使用所选地点的地点视图启动地图应用程序。
  • PlacesShowDetailsByIdHrefTask 允许您使用所选地点的地点视图启动地图应用程序。

请注意,如果 Windows Phone 8 设备上未安装 HERE 地图,系统将引导用户从应用商店免费下载。

【讨论】:

  • 好吧,我不希望我的应用程序过多依赖于其他应用程序,在这种情况下,如果我使用它,那么如果有人不想在这里使用地图(因为某些原因),那么我的应用将无用
  • 如果用户:a) 没有 HERE 地图 应用程序 b) 不想此时下载几 MB 的数据(例如,由于带宽有限)。在这种情况下,您可以尝试显示从原始 REST 请求中检索到的一些信息。应该注意的是,HERE Maps 是免费的,并且预装在已经占 WP8 市场 80% 以上的 Nokia Lumias 上。大概如果用户已经购买了手机,他们会熟悉安装在手机上的标准地图应用程序。
  • 根据AdDuplex实际超过90%
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多