Интеграция ASP.NET Web Api и Android Volley - PullRequest
0 голосов
/ 25 января 2019

Я занимаюсь разработкой проекта ASP.NET Web Api с Entity Framework и другим проектом с Android и библиотекой Volley.

Идея состоит в том, чтобы в ASP.NET был сервер и приложение для Android.клиент.

Оба проекта уже работают.Проект ASP.NET уже подключен к SQL Server и возвращает значения в формате json из одной базы данных, а клиент также анализирует json с онлайн-сервера, который я использовал для тестирования, когда следовал одному учебнику.

ASP.NET Web Api Controller:

public class StoreController : ApiController
{
    // GET: api/Store
    public IEnumerable<bo> Get()
    {
        using (EGLA_PHCEntities services = new EGLA_PHCEntities())
        {
            return services.bo.Where(e => e.nmdos == "Ficha Servico 30").Where(e => e.fechada == false).ToList();
        }
    }
    ...
}

Android:

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONArray jsonArray = response.getJSONArray(null);

                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject employee = jsonArray.getJSONObject(i);
                        String firstName = employee.getString("fieldA");
                        String mail = employee.getString("fieldB");

                        mTextViewResult.append(firstName + ", " + mail + "\n\n");
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        error.printStackTrace();
    }
});

Проблема в том, что мой проект в ASP.NET не возвращает имя для массива объектов, а Androidожидание имени.

Решение может быть применено в ту или иную сторону.Он может пройти через проект ASP.NET, чтобы вернуть имя, или проект в Android, чтобы проанализировать json с пустым именем массива.

Изменено, поскольку список полей очень обширный:

[
    {
        "fieldA":"Something",
        "fieldB":"Store 30",
    }, 
    {
        "fieldA":"Something 2",
        "fieldB":"Store 30 2",
    }
]

Ошибка, которая возвращается в приложении Android: «org.json.JSONException: Нет значения для нуля».Если я изменю

JSONArray jsonArray = response.getJSONArray(null);

на:

JSONArray jsonArray = response.getJSONArray("services");

Возвращенная ошибка: «org.json.JSONException: Нет значения для служб»

...