gpt4 book ai didi

android - 如何在我的请求 header 中添加授权?

转载 作者:行者123 更新时间:2023-11-29 19:53:37 25 4
gpt4 key购买 nike

我需要在我的请求中添加授权 header ,它必须如下所示:

"Authorization: Basic Zm9vOmJhcg=="

我有用户名和密码的值,如何将其添加到 Retrofit 2 的请求中?这看起来很简单,但我不知道我可以在我的 Fragment 中的什么地方初始化这个 header

我的 fragment 类:

public class FeedFragment extends Fragment {
EditText username;
EditText password;
Button btnLogin;

public List<SignInResult> signInResult;
String username_value,password_value;
public static final String ROOT_URL = "https://api.vid.me/";

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_feed, container, false);
username = (EditText) rootView.findViewById(R.id.user_name_field);
password = (EditText) rootView.findViewById(R.id.password_field);
btnLogin = (Button) rootView.findViewById(R.id.button_login);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Authorize();
}
});
return rootView;
}

public void Authorize() {
Retrofit retrofitAdapter = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(ROOT_URL)
.build();
final VideoApi videoApi = retrofitAdapter.create(VideoApi.class);

username_value = username.getText().toString();
password_value = password.getText().toString();

Call<SignInResults> call = videoApi.insertUser(username_value,password_value);
call.enqueue(new Callback<SignInResults>() {


@Override
public void onResponse(Call<SignInResults> call, Response<SignInResults> response) {
SignInResults results = response.body();
Log.d("Response ==>> ", new GsonBuilder().setPrettyPrinting().create().toJson(results));

}

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

}
});
}
}

我的 API 接口(interface):

public interface VideoApi {

@GET("/videos/featured")
Call<Videos> getFeaturedVideo();

@GET("/videos/new")
Call<Videos> getNewVideo();

@Headers("Content-Type:application/x-www-form-urlencoded")
@FormUrlEncoded
@POST("/auth/create")
Call<SignInResults>insertUser(@Field("email") String username,
@Field("password") String password
);
}

最佳答案

根据用例,您可以采用两种方法。

第一种方式:使用okhttp客户端为你的请求添加拦截器

final String myToken = "Zm9vOmJhcg==";
Interceptor interceptor = new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Authorization", "Basic " + yourtoken).build();
return chain.proceed(newRequest);
}
};

OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.interceptors().add(interceptor);
OkHttpClient client = builder.build();

现在更改您的 retrofit 电话。

Retrofit retrofitAdapter = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(ROOT_URL)
.client(client)
.build();

第二种方式:将 header 添加到您的 API 调用

Call<SignInResults>insertUser(
@Header("Authorization") String token,
@Field("email") String username,
@Field("password") String password
);

关于android - 如何在我的请求 header 中添加授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36856973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com