2017-01-15 15 views
3

Я создаю запрос с retrofit2 и отправляю параметр на сервер, как можно получить доступ к передаваемому параметру в onResponse?Доступ к переданному параметру в onResponse of retrofit 2

retrofit = new Retrofit.Builder() 
      .baseUrl("baseAddress") 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    ApiBase serviceSetParam = retrofit.create(ApiBase.class); 
    Call<String> myCall = serviceSetParam.setParam("data1","data2"); 
    Callback<String> myCallback = new Callback<String>() { 
     @Override 
     public void onResponse(Call<String> call, Response<String> response) { 

      //i need access data1 & data2 Here ! 

      if (response.isSuccessful()) { 
       String mResponse= response.body(); 
      } else { 
       Utils.Log("unSuccessful"); 
      } 


     } 

     @Override 
     public void onFailure(Call<String> call, Throwable t) { 
      Utils.Log("onFailure"); 
     } 
    }; 
    myCall.enqueue(myCallback); 

здесь метод отправки пар:

@FormUrlEncoded 
    @POST("set") 
    Call<String> setParam(@Field("param1") String param1, @Field("param2") String param2); 

ответ

2

в onResponse метода Вашего запроса, проверить этот код:

   try { 
        BufferedSink bf = new Buffer(); 
        call.request().body().writeTo(bf); 
        Log.i("params are",bf.buffer().readUtf8().toString()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
+0

спасибо. это работа. – javaddroid

+0

Это не делает ничего, чтобы получить параметры URL. –

+0

Мне нужно реализовать аналогичный код в Android, хочу убедиться, что я импортирую нужную библиотеку. Для 'BufferedSink' и' Buffer', это 'okio.Buffer' и' okio.BufferedSink'? Благодаря! –

2

Вы должны получить первоначальный запрос от OkHttp.

List<String> pathSegments = original(response.raw()).url().pathSegments();

Дано:

static Request original(Response response) { 
    while (true) { 
    Response prior = response.priorResponse(); 
    if (prior == null) { 
     break; 
    } 
    response = prior; 
    } 
    return response.request(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^