我有一个使用身份验证令牌和以下代码调用Rest API的android应用程序
private void apiCall(){
AsyncHttpClient client = new AsyncHttpClient();
RequestParams param = new RequestParams();
client.addHeader("IDENTITY_KEY",TOKEN);
client.get(URL, param, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
mTextMessage.setText(statusCode);
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
mTextMessage.setText(statusCode+"");
}
});
}
问题是当我运行应用程序时,它返回0,为什么? 在方法外声明和初始化的URL和TOKEN。
答案 0 :(得分:-1)
我建议您使用retrofit库来做到这一点。
比方说,您的URL基础是http://baseurl.com/api,您必须执行GET请求以通过电子邮件和密码登录/ login。我假设您的API将以JSON形式返回User对象。
Api.java
@GET("login")
Call<LoginResponse> verifyLogin(@Query("email") String email, @Query("password") String password);
需要执行API调用的地方,请执行以下操作
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://baseurl.com/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
Api api = retrofit.create(Api.class);
Call<LoginResponse> responseCall = api.verifyLogin("email","password");
responseCall.enqueue(new Callback<ProductResponse>() {
@Override
public void onResponse(Call<ProductResponse> call, Response<ProductResponse> response) {
if (response.isSuccessful()){
//do whatever you need,
}
}
@Override
public void onFailure(Call<ProductResponse> call, Throwable t) {
Toast.makeText(context, "There was an error.", Toast.LENGTH_SHORT).show();
Log.e("error",t.getMessage().toString());
}
});
注意:LoginResponse是POJO类。您必须制作一个POJO类来执行改装操作。很简单您可以从此处doc 1 doc 2
了解有关改造的更多信息