我想使用 API 从服务器获取通知。我正在使用 Retrofit2 来处理 API。
问题是当我在 POST 方法中传递参数时,我收到“IllegalArgumentException URL 不包含该参数”。
参数正确并在 iOS 中工作。我想在android中实现。
以下是调试应用程序时的结果。
Caused by: java.lang.IllegalArgumentException: URL
"notification/newnotification" does not contain "{userid}". (parameter #1)
我试过更改参数并询问 API 开发人员。他说参数是正确的。
这是 API 接口的代码:
public interface API{
@FormUrlEncoded
@POST("notification/newnotification")
Call<ResponseBody> getUserNotification(
@Path("userid") int userid
);
}
RetrofitClient.java
public class RetrofitClient {
public static final String BASE_URL = "http://danceglobe.co/dance/api/";
private static RetrofitClient mInstance;
private Retrofit retrofit;
private RetrofitClient(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public static synchronized RetrofitClient getInstance(){
if(mInstance == null) {
mInstance = new RetrofitClient();
}
return mInstance;
}
public API getApi(){
return retrofit.create(API.class);
}
}
从 MainActivity 调用函数
private void getNotification(String currentUserId) {
Call<ResponseBody> call = RetrofitClient.getInstance().getApi().getUserNotification(Integer.parseInt(currentUserId));
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if(!response.isSuccessful()){
Toast.makeText(MainActivity.this,response.message(),Toast.LENGTH_SHORT).show();
}
try {
String s = response.body().string();
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
我希望它响应一些数据。
请帮我。从过去的两天开始,我就陷入了困境。
开满天机
一只斗牛犬
相关分类