我想问一下,我是否需要为每个Interfaces
POST
我提出的具有不同网址的请求创建新的GET
。
对于前者
我创建了1个用于注册的界面,另一个用于登录其他用于获取朋友。我不能只做一般的帖子并获得方法,我可以发送URL,params发送和记录响应?
答案 0 :(得分:0)
在界面内,您可以根据需要和要求创建多种方法。
对于Login
和Registration
方法名称将有所不同,您的参数将不相同。所以你可以根据需要创建方法。
//When Base Url like "http://exmaple.com/"
@GET("Service/registration")
Call<RegResult> getRegistered(@Query("name") String name,
@Query("email") String email,
@Query("dob") String dob,
@Query("name") String name
);
@GET("Service/login")
Call<LoginResult> getLogin(@Query("username") String username,
@Query("pass") String pass
);
@GET("Service/profile")
Call<ProfileResult> getProfile(@Query("userid") String userid
);
您也可以使用同一个客户端,因为您的基本网址是相同的。
如果基本网址不同,您也可以像这样使用相同的客户端..
public class ApiClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String base_url) {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(base_url)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
现在您可以设置不同的基本网址。
创建界面对象......
String BASE_URL = "http://exmaple.com/";
ApiInterface apiService = ApiClient.getClient(BASE_URL).create(ApiInterface.class);
通话方式..
String user_id = "1";
Call< ProfileResult > call = apiService.getProfile(user_id);
获得结果
call.enqueue(new Callback< ProfileResult >() {
@Override
public void onResponse(Call< ProfileResult >call, Response< ProfileResult > response) {
Profile profile = response.body().getResults();
}
@Override
public void onFailure(Call< ProfileResult >call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
跳过你得到你的答案....为了进一步查询填写免费询问...