gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:54:31 25 4
gpt4 key购买 nike

我必须调用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com