我想使用 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.javapublic 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(); } }我希望它响应一些数据。请帮我。从过去的两天开始,我就陷入了困境。
2 回答
开满天机
TA贡献1786条经验 获得超12个赞
Caused by: java.lang.IllegalArgumentException: URL
"notification/newnotification" does not contain "{userid}". (parameter #1)
意味着您应该将 userId 添加到路径中
public interface API {
@POST("notification/newnotification/{userid}")
Call<ResponseBody> getUserNotification(
@Path("userid") int userid
);
}
一只斗牛犬
TA贡献1784条经验 获得超2个赞
我通过对 API 接口进行一些更改使其工作。以下是 API 接口的新代码
@FormUrlEncoded
@POST("notification/newnotification")
Call<ResponseBody> getUserNotification(
@Field("userid") String userid // changed line
);
添加回答
举报
0/150
提交
取消