Wir haben einen Azure WebAPI Service, der manchmal eine BadRequest wie soStringContent ist leer auf Xamarin.Android
return BadRequest("{\"errors\":[{\"message\":\"MyBuddy not found!\",\"code\":9}]}");
Das Problem ist, dass auf Xamarin.Android zurückkehren können, die System.Net.Http.HttpClient verwenden, Der Antwortinhalt, den wir erhalten, ist leer.
Dies ist unser Code:
private static async Task<int> ReadErrorCodeAsync(HttpResponseMessage response)
{
var x = response.ReasonPhrase;
var errorSerialized = await response.Content.ReadAsStringAsync();
var error = JObject.Parse(errorSerialized);
return ((JArray)error["errors"])[0]["code"].Value<int>();
}
Aber errorSerialized ist immer eine leere Zeichenfolge. Wir verwenden auch einen Swagger UI und dort die Antwort Inhalt ist das, was wir erwarten, z.B .:
{
"errors": [
{
"message": "MyBuddy not found!",
"code": 9
}
]
}
Ist es normal, dass der Inhalt eines BadRequest reponse auf Xamarin.Android leer ist? Kann ich irgendetwas tun, z.B. konfiguriere ich den HttpClient anders, damit ich den StringContent erhalte?
EDIT: Wir verwenden die AndroidClientHandler
. Dazu haben wir eine Textdatei mit dem Android-Projekt hinzugefügt, setzen Sie die Buildaction zu AndroidResource
und seinen Inhalt zu XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
Ich wäre für Hilfe dankbar sein - immer noch nicht das Problem gelöst :( –
Sie können die Version von meiner Pull-Anforderung verwenden. Es sollte das Problem lösen. https://github.com/smstuebe/xamarin-android/blob/client-handler-error-response/src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs –
Funktioniert! Vielen Dank :) –