简体   繁体   English

我想在我的 retrofit 发布请求中添加一个不记名令牌

[英]I want to add a bearer token to my retrofit post request

I have an app that is to register people into a platform but I get a response of Unauthenticated each time I submit the form data.我有一个将人们注册到平台的应用程序,但每次提交表单数据时都会收到未Unauthenticated的响应。 The form is submitted using an API which requires a bearer token for each post request with the aid of retrofit.该表单使用 API 提交,在 retrofit 的帮助下,每个发布请求都需要一个不记名令牌。 I have been out of touch with Java.我已经与 Java 脱节。 Note: its just a plain form.注意:它只是一个简单的形式。 No authentication has been implemented in the app.该应用程序中未实施任何身份验证。

My ApiClient.java class我的 ApiClient.java class

public class ApiClient {

    private static Retrofit getRetrofit(){

        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor).build();


        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("xxxxxxxxxxxxx")
                .addConverterFactory(GsonConverterFactory.create())
                .client(okHttpClient)
                .build();

        return retrofit;
    }

    public static UserService getUserService(){
        UserService userService = getRetrofit().create(UserService.class);

        return userService;
    }
}

My UserService.java class我的 UserService.java class

public interface UserService {

    @POST("algonapi/api/enroll_vehicle")
    Call<UserResponse> saveUser(@Body UserRequest userRequest);

}

My saveUser Method我的 saveUser 方法

public void saveUser(UserRequest userRequest){
        Call<UserResponse> userResponseCall = ApiClient.getUserService().saveUser(userRequest);
        userResponseCall.enqueue(new Callback<UserResponse>() {
            @Override
            public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
                if (response.isSuccessful()){
                    Toast.makeText(MainActivity.this, "Registration Successfull! Click on Reset Form to Start a New Enumeration...", Toast.LENGTH_LONG).show();
                }else {
                    Toast.makeText(MainActivity.this, "Registration Failed!", Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onFailure(Call<UserResponse> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Registration Failed!" +t.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }

My UserRequest我的用户请求

package com.example.xxxxx;

public class UserRequest {
    private String FullName;
    private String StickerNumber;
    private String Address;
    private String Email;
    private String Phone;
    private String Nationality;
    private String State;
    private String LGA;
    private String RC;
    private String DriversLicenseNo;
    private String LicenseIssued;
    private String LicenseExpiry;
    private String VehicleType;
    private String VehicleLicense;
    private String VehicleTyres;
    private String LGAofOperation;
    private String NOKFullName;
    private String NOKAddress;
    private String NOKPhone;
    private String NOKEmail;
    private String NOKNationality;
    private String NOKState;

  
    public String getFullName() {
        return FullName;
    }

    public void setFullName(String fullName) {
        FullName = fullName;
    }

    public String getStickerNumber() {
        return StickerNumber;
    }

    public void setStickerNumber(String stickerNumber) {
        StickerNumber = stickerNumber;
    }

    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }

    public String getEmail() {
        return Email;
    }

    public void setEmail(String email) {
        Email = email;
    }

    public String getPhone() {
        return Phone;
    }

    public void setPhone(String phone) {
        Phone = phone;
    }

    public String getNationality() {
        return Nationality;
    }

    public void setNationality(String nationality) {
        Nationality = nationality;
    }

    public String getState() {
        return State;
    }

    public void setState(String state) {
        State = state;
    }

    public String getLGA() {
        return LGA;
    }

    public void setLGA(String LGA) {
        this.LGA = LGA;
    }

    public String getRC() {
        return RC;
    }

    public void setRC(String RC) {
        this.RC = RC;
    }

    public String getDriversLicenseNo() {
        return DriversLicenseNo;
    }

    public void setDriversLicenseNo(String driversLicenseNo) {
        DriversLicenseNo = driversLicenseNo;
    }

    public String getLicenseIssued() {
        return LicenseIssued;
    }

    public void setLicenseIssued(String licenseIssued) {
        LicenseIssued = licenseIssued;
    }

    public String getLicenseExpiry() {
        return LicenseExpiry;
    }

    public void setLicenseExpiry(String licenseExpiry) {
        LicenseExpiry = licenseExpiry;
    }

    public String getVehicleType() {
        return VehicleType;
    }

    public void setVehicleType(String vehicleType) {
        VehicleType = vehicleType;
    }

    public String getVehicleLicense() {
        return VehicleLicense;
    }

    public void setVehicleLicense(String vehicleLicense) {
        VehicleLicense = vehicleLicense;
    }

    public String getVehicleTyres() {
        return VehicleTyres;
    }

    public void setVehicleTyres(String vehicleTyres) {
        VehicleTyres = vehicleTyres;
    }

    public String getLGAofOperation() {
        return LGAofOperation;
    }

    public void setLGAofOperation(String LGAofOperation) {
        this.LGAofOperation = LGAofOperation;
    }

    public String getNOKFullName() {
        return NOKFullName;
    }

    public void setNOKFullName(String NOKFullName) {
        this.NOKFullName = NOKFullName;
    }

    public String getNOKAddress() {
        return NOKAddress;
    }

    public void setNOKAddress(String NOKAddress) {
        this.NOKAddress = NOKAddress;
    }

    public String getNOKPhone() {
        return NOKPhone;
    }

    public void setNOKPhone(String NOKPhone) {
        this.NOKPhone = NOKPhone;
    }

    public String getNOKEmail() {
        return NOKEmail;
    }

    public void setNOKEmail(String NOKEmail) {
        this.NOKEmail = NOKEmail;
    }

    public String getNOKNationality() {
        return NOKNationality;
    }

    public void setNOKNationality(String NOKNationality) {
        this.NOKNationality = NOKNationality;
    }

    public String getNOKState() {
        return NOKState;
    }

    public void setNOKState(String NOKState) {
        this.NOKState = NOKState;
    }
}

Create the OkHttpClient like this像这样创建OkHttpClient

  OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
        @NotNull
        @Override
        public Response intercept(@NotNull Chain chain) throws IOException {
            Request request=chain.request().newBuilder()
                    .addHeader("Authorization", "Bearer " + token)
                    .build();
            return chain.proceed(request);
        }
    }).build();

If you most of your https requests need authentication then the first answer is perfect but if some of your requests need then you can pass the header to each methods.如果您的大部分 https 请求都需要身份验证,那么第一个答案是完美的,但如果您的某些请求需要,那么您可以将 header 传递给每个方法。

public interface UserService {
    @POST("algonapi/api/enroll_vehicle")
    Call<UserResponse> saveUser(
        @Header("Authorization") String token,
        @Body UserRequest userRequest
    );
}

While calling the method simply pass your token along with userRequest.在调用该方法时,只需将您的令牌与 userRequest 一起传递。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM