Xamarin HTTPClient 突然不GET/POSTing
Xamarin HTTPClient suddenly not GET/POSTing
潜伏已久,第一次提问
所以我有一些代码已经运行了很长时间(它是核心功能,所以我知道它一直很好)。我最近对我的 PC 进行了格式化,这可以理解地随着时间的推移重置了我所有的自定义配置。现在突然间,我的 HTTPClient 代码根本没有 GET 或 POST,除非我破坏了异步功能——甚至破坏了其他东西。我让它 运行,客户端最终超时。
代码在下面的 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;
}
调用上面两个函数的示例代码是:
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);
所以我现在已经将 ConfigureAwait(false);
用于我的 Getter
函数 - 现在可以正确进行 HTTP 调用。 但是它仍然没有从我上面的第一个authToken
行发展到response
行
编辑:原来我的代码中有一个障碍——我的一个顶级函数依赖于 this.VARIABLE = sM.Getter().Result()
。删除它最终解决了我的问题。感谢大家的帮助!
原来我的代码中有一个障碍——我的一个顶级函数依赖于 this.VARIABLE = sM.Getter().Result();
。删除它最终解决了我的问题。感谢大家的帮助!
潜伏已久,第一次提问
所以我有一些代码已经运行了很长时间(它是核心功能,所以我知道它一直很好)。我最近对我的 PC 进行了格式化,这可以理解地随着时间的推移重置了我所有的自定义配置。现在突然间,我的 HTTPClient 代码根本没有 GET 或 POST,除非我破坏了异步功能——甚至破坏了其他东西。我让它 运行,客户端最终超时。
代码在下面的 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;
}
调用上面两个函数的示例代码是:
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);
所以我现在已经将 ConfigureAwait(false);
用于我的 Getter
函数 - 现在可以正确进行 HTTP 调用。 但是它仍然没有从我上面的第一个authToken
行发展到response
行
编辑:原来我的代码中有一个障碍——我的一个顶级函数依赖于 this.VARIABLE = sM.Getter().Result()
。删除它最终解决了我的问题。感谢大家的帮助!
原来我的代码中有一个障碍——我的一个顶级函数依赖于 this.VARIABLE = sM.Getter().Result();
。删除它最终解决了我的问题。感谢大家的帮助!