Arhn - архитектура программирования

Android Retrofit 2.0 Получить проблему

Я использую модификацию 2.0, и у меня есть почтовый запрос с токеном и идентификатором пользователя, и в ответ я получаю jsonobject, содержащий arraylist

Структура ответа следующая

{
 "communities": [
   {
     "commId": 1,
     "name": "Enginnering"
   },
   {
     "commId": 2,
     "name": "Student"
   },
    {
     "commId": 3,
     "name": "Banking"
   },
   {
     "commId": 4,
     "name": "Teacher"
   },
   {
     "commId": 5,
     "name": "Government"
   },
   {
     "commId": 6,
     "name": "Political"
   }
 ]
}

Структура класса модели приведена ниже.

    CommunityModel implements Serializable{

    public static final String KEY_COMMUNITY_ID = "commId";
    public static final String KEY_COMMUNITY_NAME = "name";
    public static final String KEY_CREATED_AT="c_at";
    public static final String KEY_UPDATED_AT="u_at";
    public static final String KEY_AUTHORIZATION = "Authorization";
    public static final String KEY_COMMUNITIES="communities";

    @SerializedName(KEY_COMMUNITY_ID)
    int communityid;

    @SerializedName(KEY_COMMUNITY_NAME)
    String communityName;

    @SerializedName(KEY_CREATED_AT)
    String createdAt;

    @SerializedName(KEY_UPDATED_AT)
    String updatedAt;


    public CommunityModel(int communityid, String communityName, String createdAt, String updatedAt)
    {
        this.communityid=communityid;
        this.communityName=communityName;
        this.createdAt=createdAt;
        this.updatedAt=updatedAt;
    }

    public int getCommunityid() {
        return communityid;
    }

    public void setCommunityid(int communityid) {
        this.communityid = communityid;
    }

    public String getCommunityName() {
        return communityName;
    }

    public void setCommunityName(String communityName) {
        this.communityName = communityName;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public String getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(String updatedAt) {
        this.updatedAt = updatedAt;
    }
}

Мой модифицированный интерфейс

@FormUrlEncoded
    @POST("/v1/communities/")
    Call<ArrayList<CommunityModel>> getCommunities(
            @Query(CommunityModel.KEY_AUTHORIZATION) String servertoken,
            @Field(UserAccount.KEY_USER_ID) int type,
            @Field(CommunityModel.KEY_COMMUNITIES) ArrayList<CommunityModel>communityList
    );

Мой помощник по модернизации для получения ArrayList выглядит следующим образом:

public ArrayList<CommunityModel> getcommunities() {
        final ArrayList<CommunityModel> returnCommunityList = new ArrayList<>();
        //final int userId = mIntent.getIntExtra(UserAccount.KEY_USER_ID, 0);
        final String serverToken ="Basic"+" "+localSession.getServerToken();
        DebugLog.i(NetworkOperationService.class.getSimpleName(), "servertoken"+serverToken);
        Call<ArrayList<CommunityModel>> communityCall = mNetworkOperation.getCommunities(serverToken, localSession.getUserId(),);
        communityCall.enqueue(new Callback<ArrayList<CommunityModel>>() {
            @Override
            public void onResponse(Call<ArrayList<CommunityModel>> call, Response<ArrayList<CommunityModel>> response) {

                DebugLog.i(NetworkOperationService.class.getSimpleName(), "servertoken"+serverToken+"userid="+localSession.getUserId());

                if (response!=null && response.code()==200)
                {
                    DebugLog.i(NetworkOperationService.class.getSimpleName(), "200");
                    ArrayList<CommunityModel> arrayList = response.body();

                    for (int i=0;i<arrayList.size();i++)
                    {
                        returnCommunityList.add(arrayList.get(i));
                        DebugLog.i(NetworkOperationService.class.getSimpleName(), arrayList.get(i).getCommunityName());
                    }
                }
                else{
                    DebugLog.i(NetworkOperationService.class.getSimpleName(), "respose code"+response.code());
                }
            }
            @Override
            public void onFailure(Call<ArrayList<CommunityModel>> call, Throwable t) {
            }
        });

        return returnCommunityList;
    }

Буду очень признателен за любую помощь... я не могу получить ответ... я хочу получить ответ так же, как указано выше...

пожалуйста помоги


  • любая ошибка? пожалуйста, добавьте журнал 24.11.2016
  • я получаю сообщение об ошибке 400... потому что он принимает заголовки для аутентификации.... так что теперь я добавил заголовок, дающий ответ... я хотел бы знать разницу между параметром query() и заголовками() 24.11.2016

Ответы:


1

Вы можете попробовать следующий код для отправки поля заголовка с модификацией.

public interface UserService {  
    @GET("/tasks")
    Call<List<Task>> getTasks(@Header("Content-Range") String contentRange);
} 

В противном случае вы можете попробовать использовать OkHttpClient:

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();  
httpClient.addInterceptor(new Interceptor() {  
    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        Request original = chain.request();

        Request request = original.newBuilder()
            .header("User-Agent", "Your-App-Name")
            .header("Accept", "application/vnd.yourapi.v1.full+json")
            .method(original.method(), original.body())
            .build();

        return chain.proceed(request);
    }
}

OkHttpClient client = httpClient.build();  
Retrofit retrofit = new Retrofit.Builder()  
    .baseUrl(API_BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build();
28.03.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..