繁体   English   中英

通过 Object 的自定义数组作为 API Retrofit PUT 调用中的参数

[英]Pass Custom array of Object as a Parameter in API Retrofit PUT Call

我必须致电 API 来更新特定用户的紧急联系人。

https://stay-safe-api.azurewebsites.net/5eadd53761***0f6017/update/emergency_contact_details

//Body of API  
{
"EmergencyContacts": [
    {
        "FullName" : "Johon",
        "PhoneNumberCountryCode" : "ae",
        "PhoneNumberCountryDialCode" : "971",
        "PhoneNumber" : "5534566"

    }   
]
}

所以我有一个数组,我正在传递我的 API 调用,但是每当调用它时,我都会收到输入不正确的错误。

我不知道我在做什么错我实际上是新人所以你们能帮帮我吗?

API接口.class

@FormUrlEncoded
@PUT("update/emergency_contact_details")
Call<RegisterResponse> setEmergencyContact(@Field("EmergencyContacts[]") List<EmergencyList> 
EmergencyContacts);

APIClient.class

 public static Retrofit getClientEmerg(String id) {
    if (retrofit == null) {
        retrofit = new Retrofit.Builder()
                .baseUrl("https://stay-safe-api.azurewebsites.net" + id + "/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

MainActivity.class

 ApiInterface apiInterface = ApiClient.getClientEmerg(id).create(ApiInterface.class);
    Call<RegisterResponse> call = apiInterface.setEmergencyContact(emergencyLists);
    call.enqueue(new Callback<RegisterResponse>() {
        @Override
        public void onResponse(Call<RegisterResponse> call, Response<RegisterResponse> response) {

         }
        @Override
        public void onFailure(Call<RegisterResponse> call, Throwable t) {
            progress.dismiss();
        }
    });


}

所以让我知道在 API 调用中将数组作为参数传递时我做错了什么? 因为我收到“这是无效请求。请确保输入正确”的错误。

谢谢。

尝试在您的 ApiInterface 中使用Body 注释(并摆脱 FormUrlEncoded):

@PUT("update/emergency_contact_details")
Call<RegisterResponse> setEmergencyContact(@Body List<EmergencyList> EmergencyContacts);

仍然很奇怪,为什么您需要发送联系人列表,尽管端点似乎在路径中包含 id(因此您可以通过此 PUT 仅更新一个联系人)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM