Динамически передать заголовок и тело в модификации - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь отправить заголовок http и тело, используя модификацию, но есть ошибка.Может кто-нибудь, пожалуйста, помогите мне?ниже мой код: у меня есть ApiClient следующим образом:

public class ApiClient {
public static Retrofit retrofit = null;
public static Retrofit getApiClient(final String token) {

    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("Authorization", "Bearer "+token)

                                              .method(original.method(), original.body())
                                              .build();

                                      return chain.proceed(request);
                                  }
                              });
    OkHttpClient client = httpClient.build();






    if (retrofit == null) {
        retrofit = new Retrofit.Builder().baseUrl(BaseUrl.BASE_URL)
                    .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

следующий мой интерфейс:

public interface RegisterInterface {
  @POST("api/userData/registerNewUserData")
Call<RegisterModel> getData(@Body RequestBody body);

}

И после того, как класс, где мне нужночтобы использовать API:

registerInterface = ApiClient.getApiClient(accessToken).create(RegisterInterface.class);
                Call<RegisterModel> call = registerInterface.getData(requestBody);
                call.enqueue(new Callback<RegisterModel>() {
                    @Override
                    public void onResponse(Call<RegisterModel> call, Response<RegisterModel> response) {
                        Log.e("code", response.code() + "");

                        String message = response.body().getMessage();
                        if (message.equals("success")) {
                            Toast.makeText(RegisterClass.this, "Data Sent Successfully", Toast.LENGTH_SHORT).show();
                            finish();
                            startActivity(getIntent());
                        }
                    }

                    @Override
                    public void onFailure(Call<RegisterModel> call, Throwable t) {

                    }
                });
            }
            else {
                Toast.makeText(RegisterClass.this, "Please fill all the fields", Toast.LENGTH_SHORT).show();
            }
        }
    });

код состояния 401. Я не знаю, что я сделал не так.Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

0 голосов
/ 30 января 2019

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

Map<String, String> stringStringMap = new HashMap<>();
        stringStringMap.put("Authorization", "Bearer "+token));
        stringStringMap.put("Content-Type", "application/json");
        stringStringMap.put("Accept", "application/json");

@POST("api/userData/registerNewUserData")
Call<RegisterModel> getData(@HeaderMap Map<String, String> headers,@Body RequestBody body);
...