Android — модернизация — как отправить список строк с несколькими значениями

#java #android #retrofit

#java #Android #модернизация

Вопрос:

у меня проблема с отправкой тела, подобного:

 {
    "items": [
        "one",
        "two"
    ],
    "repositiories": [
        {
            "repo1": "aaaa",
            "repo2": "bbbb",
            "repo3": "2020-12-09T11:00:00"
        }
    ],
    "deviceName": "AndroidPhone"
}
 

использование модернизации.

Я просто создаю два класса, используя pojoSchema, и выполнил функцию для отправки данных:

     public sentItems(List<String> items, List<Position> repositories, String deviceName) {
        this.items= items;
        this.repositories= repositories;
        this.deviceName= deviceName;
    }
 

Также я обновил свой интерфейс api следующим кодом:

     @POST("/api/postItems/")
    Call<SentItemsAndRepos> sentItemsAndRepos(@Body SentItemsAndRepos SentItemsAndRepos);
 

И всегда, когда я пытаюсь отправить, например, статические значения, я получаю сообщение об ошибке:

 onFailure: End of input at line 1 column 1 path $
 

Просто не имею ни малейшего представления, как его разбить .. я застрял в этом случае..
Возможно, я отправляю неправильные данные, но я не уверен…
Вот мой пример для отправки:

 List<String> items = new ArrayList<>();
items.add("one");
items.add("two");

Repositories firstRepo = new repositories("aaaa","bbbb",Calendar.getInstance().getTime());
List<Repositories> repositories = new ArrayList<repositories>();
repositories.add(firstRepo);

String deviceName = "AndroidPhone"
postItemsFunc(items,repositories,deviceName);

private void postItemsFunc(List<String> items, List<Position> repositories, String deviceName){

            SentItemsAndRepos sentItemsAndRepos= new SentItemsAndRepos(items,repositories,deviceName);
            Call<SentItemsAndRepos> call = ApiLoginInterface.sentItemsAndRepos(sentItemsAndRepos);
            call.enqueue(new Callback<SentItemsAndRepos>() {
 

Это все, что, я думаю, вы хотите помочь, ofc, если вы хотите помочь .. 🙂
Я буду очень признателен, если вы потратите время, чтобы помочь мне…

Ответ №1:

Я реализую некоторый исходный код из своего репозитория git

 public void fetchContact(String type, String key){

    apiInterface = ApiClient.getApiClient().create(ApiInterface.class);

    Call<List<Contact>> call = apiInterface.getContact(type, key);
    call.enqueue(new Callback<List<Contact>>() {
        @Override
        public void onResponse(Call<List<Contact>> call, Response<List<Contact>> response) {
            progressBar.setVisibility(View.GONE);
            contacts = response.body();
            adapter = new Adapter(contacts, MainActivity.this);
            recyclerView.setAdapter(adapter);
    //        adapter.notifyDataSetChanged();
        }

        @Override
        public void onFailure(Call<List<Contact>> call, Throwable t) {
            progressBar.setVisibility(View.GONE);
            Toast.makeText(MainActivity.this, "Errorn" t.toString(), Toast.LENGTH_LONG).show();
        }
    });
}
 

Перейдите по следующей ссылке, чтобы легко понять это

https://github.com/Istiakshovon/RetrofitRecyclerView/blob/master/app/src/main/java/com/istiak/getdatabyretrofit/MainActivity.java

Комментарии:

1. Здравствуйте, я думаю, что это близко к моей проблеме, но ваше решение не решает эту проблему..

2. @3milBow Ой! Извините. Я не прочитал весь ваш вопрос. У вас возникла проблема onFailure: End of input at line 1 column 1 path $ для меня, это показывает ошибку, когда у вас возникла проблема в php(server file) So, можете ли вы реализовать server скрипт?

3. Я думаю, что я не понимаю вашего вопроса: P Этот код взят из Android Studio, а вовсе не из веб-сервисов.