java - 在 API Retrofit PUT 调用中将自定义对象数组作为参数传递

标签 java android api retrofit

我必须调用 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 调用,但每当调用它时,我都会收到输入不正确的错误。

我不知道我做错了什么,我实际上是新手,所以你们能帮助我吗?

APIInterface.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 调用中将数组作为参数传递时做错了什么?因为我收到错误“这是无效的请求。请确保输入正确。”

谢谢。

最佳答案

尝试使用Body annotation在你的 ApiInterface 中(并去掉 FormUrlEncoded):

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

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

关于java - 在 API Retrofit PUT 调用中将自定义对象数组作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61614659/

相关文章:

android - 如何在 Android Marshmallow 中创建 wifi 网络共享热点?

ruby-on-rails - 如何在没有 "root"节点和 rabl 的情况下使用不同的模板进行收集

json - 从 Postman 创建 Firestore 数据库文档

android - 哪里可以下载android.widget.Gallery的源码?

调用另一个 API 后 JavaScript API 返回未定义状态

java - 使用ANTLR4获取方法的注释

java - 在 GXT 中重新渲染

java - 如何等待另一个捆绑?

java - 具有指向 C 中结构节点的指针数组的结构节点

android - 如何选择抽屉导航中的第一项并在应用程序启动时打开 fragment