【问题标题】:Null response Xamarin android application using web api使用 Web api 的空响应 Xamarin android 应用程序
【发布时间】:2016-12-20 08:08:15
【问题描述】:

您好,我刚刚学习 Xamarin android 开发,我只想进行 CRUD 操作,但我无法从 webapi 获得任何响应。我已经使用 SOAPUI 测试了我的 api,并且响应正常。

[HttpPost]
public HttpResponseMessage CreateEmpAttandance(string value)
{
    if (value != "1234")
    {
        string json = @"{ data: 'Emp Code is not valid.'}";
        var jObject = JObject.Parse(json);

        var response = Request.CreateResponse(HttpStatusCode.OK);
        response.Content = new StringContent(jObject.ToString(), System.Text.Encoding.UTF8, "application/json");
        return response;

    }
    else
    {
        string json = @"{ data: 'data save sucessfully.'}";
        var jObject = JObject.Parse(json);

        var response = Request.CreateResponse(HttpStatusCode.OK);
        response.Content = new StringContent(jObject.ToString(), System.Text.Encoding.UTF8, "application/json");
        return response;


    }
}

这是 api 代码,下面是我的 android 应用程序代码,但我收到空响应异常。

  public async Task SaveTodoItemAsync(string EmpCode)
    {
        try
        {
            string url = "http://192.168.1.9/attandanceapi/api/attandance?value=12132";

            var uri = new Uri(string.Format(url));
            var json = JsonConvert.SerializeObject(EmpCode);
            var content = new StringContent(EmpCode, Encoding.UTF8, "application/json");
            HttpResponseMessage response = null;
            response = await client.PostAsync(url, content);

            var responses = response;
        }
        catch (Exception ex)
        {

            var w = ex.ToString();
        }
    }

【问题讨论】:

  • 你可以通过设备上的浏览器访问192.168.1.9/attandanceapi/api/attandance?value=12132吗?
  • 是的,响应符合要求
  • 似乎您的 api 需要发布请求,而您正在从 android 发出获取请求
  • @Yogesh , 是 post request response = await client.PostAsync(url, content);

标签: asp.net-web-api xamarin.android


【解决方案1】:

我认为我们这里有问题。您正在尝试从字符串而不是 Json 创建内容。

var content = new StringContent(EmpCode, Encoding.UTF8, "application/json");

试试这个:

var content = new StringContent(json, Encoding.UTF8, "application/json");

编辑:

我看不到你的默认标题,所以如果你没有它们 - 只需添加。

client.DefaultRequestHeaders.Add("Accept", "application/json");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多