为了账号安全,请及时绑定邮箱和手机立即绑定

使用 POST 方法在 Retrofit api 中传递参数时出现问题

使用 POST 方法在 Retrofit api 中传递参数时出现问题

白猪掌柜的 2023-03-02 15:48:38
我想使用 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

    );

}


查看完整回答
反对 回复 2023-03-02
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

我通过对 API 接口进行一些更改使其工作。以下是 API 接口的新代码


@FormUrlEncoded

@POST("notification/newnotification")

Call<ResponseBody> getUserNotification(

        @Field("userid") String userid   // changed line 

);


查看完整回答
反对 回复 2023-03-02
  • 2 回答
  • 0 关注
  • 232 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信