- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个托管在 Azure 中的 ASP.NET WebApi。它没有基于 HTTP header 或 Azure API 身份验证,并且 fiddler session 证明该 API 功能齐全,并按请求和预期输出数据。
在我的 Xamarin 表单(仅限 PCL、iOS 和 Android)PCL 项目中,我的服务类中有以下代码:
public async Task<IEnumerable<Link>> GetCategories()
{
IEnumerable<Link> categoryLinks = null;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Using https to satisfy iOS ATS requirements
var response = await client.GetAsync(new Uri("https://myproject.azurewebsites.net/api/contents"));
//response.EnsureSuccessStatusCode(); //I was playing around with this to see if it makes any difference
if (response.IsSuccessStatusCode)
{
var content = response.Content.ReadAsStringAsync().Result;
categoryLinks = JsonConvert.DeserializeObject<IEnumerable<Link>>(content);
}
}
return categoryLinks;
}
我调试了代码,发现控件没有过去:
var response = await client.GetAsync(new Uri("https://myproject.azurewebsites.net/api/contents"));
因此,categoryLinks 保持为空。
有人遇到过这种情况吗?
需要注意的几点:
虽然我怀疑这里是否有任何问题,但我有一个如下所示的 MainViewModel 类:
public class MainViewModel
{
private readonly INavigation navigation;
private readonly IContentService contentService;
public IEnumerable<CategoryItem> Categories { get; set; }
public MainViewModel(IContentService contentservice, INavigation nav)
{
this.navigation = nav;
this.contentService = contentservice;
SetCategoriesAsync();
}
private async Task SetCategoriesAsync()
{
var response = await this.contentService.GetCategories();
this.Categories = (from c in response
select new CategoryItem()
{
//code removed but you get the idea
}).AsEnumerable();
}
}
我的 MainPage.xaml.cs 的构造函数中有以下几行。我认为这里也没有任何问题。
this.MainViewModel = new MainViewModel(contentService, navService);
this.CategoriesList.ItemsSource = this.MainViewModel.Categories;
根据 this link ,我已经通过 nuget 添加了对以下库的引用(按出现顺序排列):Microsoft.BCL、Microsoft.BCL.Build、Microsoft.Net.Http
我还没有使用 ModernHttpClient。我计划在 HttpClient 工作后就这样做,因为我相信它可以提高性能。
对此的任何帮助将不胜感激。
最佳答案
我遇到了这个问题,它是由死锁引起的,你是如何调用这个方法的?通常我会去:
Device.BeginInvokeInMainThread(async () =>
{
var categoriesList = await GetCategories();
});
或者,如果它位于 View 模型内部,则可以使用 Task.Run();
避免在 UI 中使用 .Result 和计时器,即使事件处理程序也可能会导致像这样的死锁。
希望这有帮助。
关于c# - Xamarin 表单 HttpClient GetAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291977/
我想知道为什么当我在 postman 中尝试它有数据返回时它返回空值。这是我的代码。 public async Task> GetUserJobs(LoginResult token) { v
我有一个要测试的 API。这是一个方法的签名... [HttpGet("{param}")] public async Task Get(string param, string param2) {
我有一个函数可以从 Web 服务获取大量 JSON。该数据有时可能很大,达到千兆字节。我的通话如下所示。 try { using (var ht
使用 VS 2017 社区。 azure 。 我有 Azure 设置,我创建了一个空白 Web 应用程序仅用于测试目的。 我的实际站点是 Angular2 MVC5 站点,当前在本地运行。 以下代码应
我是新手,如果这是一个愚蠢的问题,我很抱歉。 我正在尝试创建 Office 插件的一些操作。 我想要它做的是获取您正在撰写的 session 的开始时间并将其放入 HTML div 中。这是我的 .j
如果这个问题之前已经被回答过,我很抱歉,但没有一个答案对我有帮助。我的 WebView 有一个事件: private async void MainWebView_UnviewableContentI
我有大量的异步请求。在某些时候,当应用程序被停用(暂停)时,我需要取消所有请求。我正在寻找一种解决方案来取消异步方法之外的请求。有人可以指出我正确的方向吗? 这是代码块。 异步方法: public a
当使用 Postman 测试我的 Web API 时,我的 API 执行得很好! 当谈到在我的客户端应用程序中使用 HttpClient 运行代码时,代码执行时没有错误,但在服务器上没有预期的结果。会
我使用MVVM-Light开发通用应用。 在一个页面上,有一个来自 WebService 的评论列表。如果当前用户是评论的作者,我会显示一个 FlyoutMenu 允许他“编辑”或“删除”其评论。还有
我一直在尝试构建一个作为 WebService 运行的 Windows ConsoleApp 来来回同步一些数据我已经构建了一个用于同步的项目,当我在我的 wpf 项目中运行它时它似乎可以工作但事实并
我对 web 服务和 rest 还很陌生,目前正在研究 servicestack。 我有以下有效的代码: var response = client.Get(SettingsManager.getMe
当使用 HttpClient 并执行 PostAsync 时,我能够添加与 HttpContent 的契约(Contract)。例如 HttpContent content = new ObjectC
我们有一个面向微服务的后端堆栈。所有构建在 Nancy 之上的微服务并使用 topshelf 注册为 Windows 服务. 处理大部分流量(~5000 请求/秒)的服务之一开始在 8 台服务器中的
我目前正在使用 HttpWebRequest 获取网站。我想使用 HttpWebRequests 未提供的等待模式。我找到了 HttpClient 类,它似乎是新的 Http worker 类。我正在
我有一个托管在 Azure 中的 ASP.NET WebApi。它没有基于 HTTP header 或 Azure API 身份验证,并且 fiddler session 证明该 API 功能齐全,并
我有一个使用 Office Javascript API 开发的 Outlook 插件。 它会查看正在撰写的新电子邮件,并根据收件人执行操作:https://learn.microsoft.com/e
我不熟悉async/await到底是如何工作的。为了更好地理解它,我创建了下面的示例代码: static void Main(string[] args) { GetA
我不熟悉async/await到底是如何工作的。为了更好地理解它,我创建了下面的示例代码: static void Main(string[] args) { GetA
所以我在关注 tutorial to build an Outlook Add-in .但是,该演示不显示消息的 body。 我还从文档中了解到,我可以调用 getAsync 来访问正文,但它不起作用
我有一个服务使用 HttpClient 类从其他服务获取一些资源。作为我们性能测试的一部分,我们模拟了 HttpClient.GetAsync() 调用以从外部服务中删除依赖项,并将其替换为从本地磁盘
我是一名优秀的程序员,十分优秀!