我使用的Xamarin下面的代碼窗體應用程序:MobileServiceClient MobileServiceInvalidOperationException響應內容爲空
HttpResponseMessage response = null;
try
{
HttpContent content = new StringContent(JsonConvert.SerializeObject(register), Encoding.UTF8, "application/json");
response = await client.InvokeApiAsync("register", content, HttpMethod.Post, null, null);
if (!response.IsSuccessStatusCode)
{
string error = await response.Content.ReadAsStringAsync();
var def = new { Message = "" };
var errorMessage = JsonConvert.DeserializeAnonymousType(error, def);
return KloverResult.BuildError(true, errorMessage.Message);
}
}
catch (MobileServiceInvalidOperationException e)
{
if (e.Response.StatusCode == System.Net.HttpStatusCode.InternalServerError)
{
string error = await e.Response.Content.ReadAsStringAsync();
var def = new { Message = "" };
var errorMessage = JsonConvert.DeserializeAnonymousType(error, def);
return KloverResult.BuildError(true, errorMessage.Message);
}
else
{
return KloverResult.BuildError(false, "Invalid username or password");
}
}
說我遇到的問題是,當一個MobileServiceInvalidOperationException被拋出的500當結果我嘗試讀取響應(e.Response.Content)的內容爲空。當我使用Restlet調用相同的API時,我得到以下響應:
{
"Message": "Name jblogs is already taken."
}
這是我期望在我的錯誤變量中,但它是空的。
我的問題是,我應該能夠讀取響應的內容?如果是這樣,我是否需要在客戶端/服務器上進行更多設置?被調用的API將返回錯誤形式的webapi使用:
Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Name jblogs is already taken.");
任何幫助,將不勝感激。
服務器故意返回500 - 將嘗試您對400系列錯誤的建議,並查看客戶端如何處理該錯誤 – markpirvine
當我使用409時,響應的內容仍然爲空 – markpirvine