这是我的界面:
public interface ApiInterface {
@GET("solicitation/all")
Call<SolicitationResponse> getAllNews(@Query("X-Authorization") String apiKey);
@POST("solicitation/create ")
Call<Solicitation> createSolicitation(@Body Solicitation solicitation);
}这是创建一个新的招标的MainActivity代码:
Solicitation solicitation = new Solicitation("xx", "list", "31", "32", "description goes here", "file goes here", "userid goes here", "203120312");
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<Solicitation> call = apiService.createSolicitation(solicitation);
call.enqueue(new Callback<Solicitation>() {
@Override
public void onResponse(Call<Solicitation> call, Response<Solicitation> response) {
Log.d("Response::", "Success!");
}
@Override
public void onFailure(Call<Solicitation> call, Throwable t) {
Log.e("Response::", "Fail!!");
}
});问题是,正如您在查询中看到的,我使用了一个api键。@Query("X-Authorization")。
似乎我不能对“身体”做同样的事。
有没有一种方法可以像在查询中那样插入api密钥?
发布于 2017-05-09 02:26:37
只需添加以逗号分隔的查询即可。
Call<Solicitation> createSolicitation(@Query("X-Authorization") String apiKey, @Body Solicitation solicitation);或在标题中
Call<Solicitation> createSolicitation(@Header("X-Authorization") String apiKey, @Body Solicitation solicitation);或者您需要一个拦截器来插入报头。
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();
// Request customization: add request headers
Request.Builder requestBuilder = original.newBuilder()
.header("X-Authorization", "YOUR AUTH KEY"); // <-- this is the important line
Request request = requestBuilder.build();
return chain.proceed(request);
}
});
OkHttpClient client = httpClient.build(); 用法
Call<Solicitation> call = apiService.createSolicitation("YOUR API KEY",solicitation);https://stackoverflow.com/questions/43859927
复制相似问题