Как добавить токен на предъявителя в запрос на модернизацию в Java - PullRequest
2 голосов
/ 23 апреля 2020

Привет, я пытаюсь добавить токен на предъявителя к вызову дооснащения в java, но я не могу передать его.

В настоящее время я регистрируюсь с помощью одного метода, и это создает токен на предъявителя, и я пытаюсь чтобы добавить токен в Get Call, но он просто возвращает ошибку 401, правильно ли я добавил токен в вызов?

@GET("diagnosis/configuration")
Call<ResponseBody> getFavourites (@Query("favourite") Boolean fave,@Header("Bearer Token") String authHeader);

@POST("auth/login")
Call<LoginResponse> postLogin (@Body LoginCredentialsBody body);



public class LoginApiStepDefinition extends TestBaseFix {

Retrofit retrofit = super.buildRetrofit(super.buildOkHttpClient());
RetrofitCallsLogin call = retrofit.create(RetrofitCallsLogin.class);
RetrofitCallsGetFavourites favecall = retrofit.create(RetrofitCallsGetFavourites.class);

private Response<LoginResponse> responseBody;
private String favouritesResponseBody;


String usernameValue;
String passwordValue;


@And("I login with {string} and {string} to return login token")
public void iLoginWithAndToReturnLoginToken(String username, String password) throws Exception {

    LoginApi(username, password);

}


public String LoginApi(String username, String password) throws Exception {


    usernameValue = username;
    passwordValue = password;

    //gets fixture ids for the dates
    LoginCredentialsBody login = new LoginCredentialsBody();
    login.setPassword(passwordValue);
    login.setUsername(usernameValue);
    String responseBody = call.postLogin(login).execute().body().toString();
    String requiredString = responseBody.substring(responseBody.indexOf("=") + 1, responseBody.indexOf(","));


    System.out.println(requiredString);


    return token;


}



@Then("I get the list of favourites with {string} and {string}")
public void iGetTheListOfFavouritesWithAnd(String username, String password) throws Exception {

    String favouritesResponseBody = favecall.getFavourites(true, LoginApi(username, password)).execute().body().toString();
    System.out.println(favouritesResponseBody);
}

}

enter image description here

1 Ответ

1 голос
/ 23 апреля 2020

Чтобы добавить токен на предъявителя при модернизации, вы должны создать класс, который реализует Interceptor

public class TokenInterceptor implements Interceptor{

    @Override
    public Response intercept(Chain chain) throws IOException {

       //rewrite the request to add bearer token
        Request newRequest=chain.request().newBuilder()
                .header("Authorization","Bearer "+ yourtokenvalue)
                .build();

        return chain.proceed(newRequest);
    }
}

Теперь добавьте свой класс Interceptor в объект OKHttpClient и добавьте этот объект в объект Retrofit:

TokenInterceptor interceptor=new TokenInterceptor();

OkHttpClient client = new OkHttpClient.Builder()
            .addInterceptor(interceptor).
            .build();

Retrofit retrofit = new Retrofit.Builder()
            .client(client)
            .baseUrl("add your url here")
            .addConverterFactory(JacksonConverterFactory.create())
            .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...