Xamarin在状态代码为500时获取API结果
在我的xamarin.forms应用程序中,我使用了一个简单的web API。API方法是Xamarin在状态代码为500时获取API结果,xamarin,xamarin.forms,Xamarin,Xamarin.forms,在我的xamarin.forms应用程序中,我使用了一个简单的web API。API方法是POST。我正在传递一些凭据,如果传递的参数中存在有效数据,API将获取这些凭据 当传递的参数有效时,结果数据如下所示 { "results": { "break_id": 40, "person_id": 48, }, "success": true } {
POST
。我正在传递一些凭据,如果传递的参数中存在有效数据,API将获取这些凭据
当传递的参数有效时,结果数据如下所示
{
"results": {
"break_id": 40,
"person_id": 48,
},
"success": true
}
{
"message": "Please enter correct details.",
"success": false
}
当参数无效时,API结果如下所示
{
"results": {
"break_id": 40,
"person_id": 48,
},
"success": true
}
{
"message": "Please enter correct details.",
"success": false
}
当我们在Postman上检查这些API时,成功的结果显示状态代码200
。失败时,结果将显示为状态代码500
我正在像这样解析API
private HttpRequestMessage req;
var jsonObtained = "";
string stringObtained = "";
var client = new HttpClient { BaseAddress = baseAddress };
T resultObject;
try
{
req = new HttpRequestMessage(HttpMethod.Post, apiurl);
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("bearer", Settings.AuthToken);
req.Content = new StringContent(postdata, Encoding.UTF8, "application/json");
Task<string> task = Task.Run(async () => await Threading(client, req));
task.Wait();
stringObtained = task.Result;
jsonObtained = Regex.Unescape(stringObtained);
var resultJSON = jsonObtained;
resultObject = JsonConvert.DeserializeObject<T>(resultJSON);
}
Catch(Exception ex)
{
}
我怎样才能解决这个问题?对于失败的结果,状态代码是否也必须为
200
?非常感谢您的帮助。此错误与xamarin无关,请参阅参考资料
我建议在您的httpClient创建中添加一个断点,并确认您向其发出请求的基址。如果您有权访问正在使用的API,请确保请求也到达服务器端的处理程序,并调试内部发生的情况Hi,谢谢。消息参数是正确的。这就是我们所期望的。但是状态代码改变了。我认为即使状态代码为500No,我们也可以得到message参数。服务器返回一个内部错误,因此他无法返回预期的对象。它如何返回“message”和“success”?如果可以从代码中获取json,请将代码放入catch语句中。