2016-11-24 5 views
0

Я использую переоснащение 2.0 и у меня есть пост запроса с токен и USERID и в ответ я получаю JSONObject содержащего Список_массивовAndroid дооснащение 2,0 Получить вопрос

Структуру ответа, как показано ниже

{ 
"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; 
    } 

Любая помощь была бы оценена ... я не могу получить ответ ... я тусклый ответ таким же образом, как указано выше ...

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

+0

любая ошибка? пожалуйста, добавьте журнал –

+0

Я получаю ошибку 400 ... потому что он принимает заголовки для аутентификации .... так что теперь я добавил заголовок его ответ ... я хотел бы знать разницу между параметром query() и заголовками() –

ответ

0

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

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(); 
Смежные вопросы