实现用于改造自定义标题和我没有得到任何发现改造注解,错误

问题描述:

这下面的代码是调用webservice的,我想实现与Retrofit在Android,但我得到这个错误:实现用于改造自定义标题和我没有得到任何发现改造注解,错误

No Retrofit annotation found 

调用Web ServiceCURL

curl -H "X-Auth-Token: 9HqLlyZOugoStsXCUfD_0YdwnNnunAJF8V47U3QHXSq" \ 
    -H "X-User-Id: aobEdbYhXfu5hkeqG" \ 
    http://localhost:3000/api/v1/channels.list 

我写这个接口像上面的代码:

import retrofit2.Call; 
import retrofit2.http.GET; 
import retrofit2.http.Header; 
public interface RocketRestfulService { 
    @GET("/api/v1/channels.list") 
    Call<List<ChannelsList>> getChannelsList(
      @Header("X-Auth-Token") String AuthToken, 
      @Header("X-User-Id") String UserId, 
      ChannelsList channelsList); 
} 

,我这段代码调用此休息Web Service

ChannelsList channelsList = new ChannelsList(); 
Call<List<ChannelsList>> call = rocketRestfulService.getChannelsList(
     "HNv1VtMiyUky2RkXWUydyj4f2bfciQ6DzVQgKULSwfe", 
     "Wz9ex2N2z9zzJWdzD", 
     channelsList); 
call.enqueue(new Callback<List<ChannelsList>>() { 
    @Override 
    public void onResponse(Call<List<ChannelsList>> call, final Response<List<ChannelsList>> response) { 
     Log.e("contentLength ", response.code() + ""); 
    } 
    @Override 
    public void onFailure(Call<List<ChannelsList>> call, Throwable t) { 
     t.printStackTrace(); 
    } 
}); 

什么我的代码,我不能打电话,我得到错误的问题?

您忘记了@Body注释。由于您必须发送正文,因此您必须为您的API创建一个POST。如果不是POST,则必须找到如何发送ChannelsList以成为GET请求,因为这取决于您的服务器实现。

@POST("/api/v1/channels.list") 
Call<List<ChannelsList>> getChannelsList(
     @Header("X-Auth-Token") String AuthToken, 
     @Header("X-User-Id") String UserId, 
     @Body ChannelsList channelsList); 
+0

我得到这个错误'非身体HTTP方法不能包含@身体现在 –

+0

@ Mahdi.Pishguy我更新了我的答案。 –

+0

我试图在Android上实现这个链接,为这个Web服务改进'https:// rocket.chat/docs/developer-guides/rest-api/channels/list'和'HTTP Method'是'GET'我在Web浏览器上,有些其他客户端没有任何问题 –

问题通过此以下代码解决:

接口:

public interface RocketRestfulService { 
    @GET("/api/v1/channels.list") 
    Call<ResponseBody> getChannelsList(
      @Header("X-Auth-Token") String AuthToken, 
      @Header("X-User-Id") String UserId); 
} 

呼叫请求,并获得响应:

ChannelsList channelsList = new ChannelsList(); 
Call<ResponseBody> call = rocketRestfulService.getChannelsList(
     "HNv1VtMiyUky2RkXWUydyj4f2bfciQ6DzVQgKULSwfe", 
     "Wz9ex2N2z9zzJWdzD"); 
call.enqueue(new Callback<ResponseBody>() { 
    @Override 
    public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) { 
     if (response.isSuccessful()) { 
      try { 
       String  jsonString = response.body().string(); 
       JSONObject jsonObject = new JSONObject(jsonString); 
       JSONArray jsonarray = jsonObject.getJSONArray("channels"); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    @Override 
    public void onFailure(Call<ResponseBody> call, Throwable t) { 
     Log.e("Err: ", t.getMessage()); 
    } 
});