我想从我的 API REST 获取原始 http 响应。我尝试过这个界面:
@POST("/login")
@FormUrlEncoded
Call<retrofit.Response> login(@Field("username") String login, @Field("password") String pass,
@Field("appName") String appName, @Field("appKey") String appKey);
但我得到:
java.lang.IllegalArgumentException:无法创建调用适配器
改造.调用
对于方法 Api.login
我创造Retrofit
这边走:
Retrofit.Builder retrofitBuilder = new Retrofit.Builder();
retrofitBuilder.addConverterFactory(JacksonConverterFactory.create());
Retrofit retrofitAdapter = retrofitBuilder.baseUrl(baseUrl).build();
return retrofitAdapter.create(apiClass);
要访问原始响应,请使用ResponseBody
来自 okhttp 作为您的调用类型。
Call<ResponseBody> login(...)
在回调中,您可以使用以下命令检查响应代码code
响应的方法。这适用于任何 Retrofit 2 返回类型,因为您的回调总是得到一个Response
使用您的实际返回类型进行参数化。对于异步——
Call<ResponseBody> myCall = myApi.login(...)
myCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Response<ResponseBody> response, Retrofit retrofit) {
// access response code with response.code()
// access string of the response with response.body().string()
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
});
对于同步调用——
Response<ResponseBody> response = myCall.execute();
System.out.println("response code" + response.code());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)