Я намагаюся додати динамічний заголовок мережевого запиту. Але він отримав помилку, як NullPointer. Я спробував цей шлях.
public interface ApiInterface {
@Multipart
@POST("/api/v1/me")
Call<LoginResponse> completeProfile(@Header("Accept") String accept, @Header("Authorization") String token,
@Part("username") RequestBody username, @Part("full_name") RequestBody full_name, @Part("email") RequestBody email);
}
Після того, як я називаю це таким чином, я не отримав ніяких значень у відповідь. Іноді я отримав помилку. Я додаю мій успішний запит до листоноші як малюнок. Може допомогти мені, де я щось відсутній.
try {
ApplicationData.hideKeyboard(activity);
showProgressDialog();
RequestBody _name = RequestBody.create(MediaType.parse("text/plain"), name);
RequestBody _user_name = RequestBody.create(MediaType.parse("text/plain"), user_name);
RequestBody _email = RequestBody.create(MediaType.parse("text/plain"), email);
RequestBody _home_town = RequestBody.create(MediaType.parse("text/plain"), home_town);
RequestBody _date_of_birth = RequestBody.create(MediaType.parse("text/plain"), date_of_birth);
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<LoginResponse> call = apiService.completeProfile(ApplicationData.ACCEPT, ApplicationData.AUTHORIZE +
"" + ApplicationData.token, _user_name, _name, _email, _home_town, _date_of_birth);
call.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
hideProgressDialog();
LoginResponse loginResponse = response.body();
// got crash here null pointer
// LogMe.e("response",":"+loginResponse.getMessage());
goToHomeActivity();
}
@Override
public void onFailure(Call<LoginResponse> call, Throwable t) {
LogMe.e(TAG, t.getMessage());
hideProgressDialog();
//
}
});
} catch (Exception e) {
e.getMessage();
e.printStackTrace();
}
Листоноша: добре відповідає разом з цими даними у малюнку Оновлення: Частина тіла листоноші
Відповіді:
0 для відповіді № 1Ця публікація в блозі показує, як можна додати динамічну кількість заголовків запитів до запитів на оновлення.
Це нова функція Retrofit 2.1, тому переконайтеся, що ви оновили свою програму, перш ніж спробувати її.
Заголовки динамічних запитів з @HeaderMap
0 для відповіді № 2
спробуйте це.
Call<LoginResponse> completeProfile(@Header("Accept") String accept, @Header("Authorization") String token,
@Part("username") RequestBody username, @Part("full_name") RequestBody full_name, @Part("email") RequestBody email);
}
Call<LoginResponse> call = apiService.completeProfile(ApplicationData.ACCEPT, ApplicationData.token, _user_name, _name, _email, _home_town, _date_of_birth);