C# Xamarin HTTPClient突然无法获取/发布
长期潜伏者,第一次询问者 所以我有一些代码在很长很长一段时间内一直运行良好(它是核心功能,所以我知道它很好)。我最近格式化了我的电脑,可以理解,随着时间的推移,它重置了我所有的自定义配置。现在,我的HTTPClient代码突然无法获取或发布,除非我破坏了异步功能,甚至破坏了其他功能。我让它运行,客户端最终超时 下面的C# Xamarin HTTPClient突然无法获取/发布,c#,.net,xamarin,uwp,dotnet-httpclient,C#,.net,Xamarin,Uwp,Dotnet Httpclient,长期潜伏者,第一次询问者 所以我有一些代码在很长很长一段时间内一直运行良好(它是核心功能,所以我知道它很好)。我最近格式化了我的电脑,可以理解,随着时间的推移,它重置了我所有的自定义配置。现在,我的HTTPClient代码突然无法获取或发布,除非我破坏了异步功能,甚至破坏了其他功能。我让它运行,客户端最终超时 下面的hClient.GetStringAsync()和hClient.PostAsync()行中的代码正在消亡——正如我提到的,它已经好了将近2年,只是突然决定按照这种格式消亡。感谢大家
hClient.GetStringAsync()
和hClient.PostAsync()
行中的代码正在消亡——正如我提到的,它已经好了将近2年,只是突然决定按照这种格式消亡。感谢大家的帮助
背景:这是一个Xamarin PCL项目,针对所有平台-目前针对UWP进行测试。在VS2015和VS2017上都有相同的问题。以前使用的是VS2015
有关守则:
public async Task<string> Getter(string uriToPass, string propertyToParse = "", string parent = "", int index = 0)
{
var uri = new Uri(uriToPass);
var response = await hClient.GetStringAsync(uri);
string valToReturn = propertyToParse == "" ? response : JsonVal(response, propertyToParse, parent);
dbg(propertyToParse + ": " + valToReturn);
return valToReturn;
}
public async Task<string> Poster(string uriToPass, Dictionary<string, string> valsToPass, string propertyToParse = "", string parent = "", int index = 0)
{
var response = await hClient.PostAsync(uriToPass, new FormUrlEncodedContent(valsToPass)).ConfigureAwait(false);
string valToReturn;
if (propertyToParse == "")
{
valToReturn = await response.Content.ReadAsStringAsync();
}
else
{
valToReturn = JsonVal(response.Content.ReadAsStringAsync().ToString(), propertyToParse, parent);
}
dbg(propertyToParse + ": " + valToReturn);
return valToReturn;
}
所以我现在使用了configurewait(false)代码>用于myGetter
函数,HTTP调用现在已正确执行。然而,从我上面的第一行authToken
到response
这一行仍然没有进展
EDIT:事实证明我的代码中毕竟有一个拦截器-我的一个顶级函数依赖于this.VARIABLE=sM.Getter().Result()
。删除它最终解决了我的问题。谢谢大家的帮助结果表明,我的代码中毕竟有一个拦截器——我的一个顶级函数依赖于this.VARIABLE=sM.Getter().Result()代码>。删除它最终解决了我的问题。谢谢大家的帮助 “死”是什么意思。您得到的响应消息和响应状态代码是什么?例外情况是什么?你试过fiddler吗?你如何调用这些方法?显示代码。Jinish:就像在中一样,它只是锁定了-查看我的探查器会向我显示正确的URI已被传递并正在被处理。没有异常或响应消息/代码-代码只是挂起。我的分析器也没有显示在那一行之后进行的任何进一步的调用Ben:看看它是否真的在调用URI?尚未编辑大卫:编辑我的帖子仍然习惯于这样,为上面的格式道歉-没有意识到它不会在评论中分割行
this.authToken = await this.sM.Getter(this.MethodBuilder("auth.gettoken"), "token");
string response = await this.sM.Poster(this.MethodBuilder("auth.getMobileSession", true, vP, true), vP);