android - 使用改造 2 发布数组
问题描述
我需要发布一组与会者,如上图所示。我尝试使用 Hashmap,但它给出了一些错误,我不知道它是服务器端错误还是改造。这是我的代码:
API接口
@FormUrlEncoded
@POST("vendor/event/{id}/checkin")
Call<DefaultResponse> updateAttendance(
@Path("id") int id,
@QueryMap Map<String,String> attendees,
@Field("token") String token);
响应类
String message;
public DefaultResponse(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
这是我的活动代码
final Map<String,String> attendees = new HashMap<>();
for (int i = 0; i < attendeesTables.size(); i++){
attendees.put("id", String.valueOf(attendeesTables.get(i).getId()));
attendees.put("arrival_time",
attendeesTables.get(i).getArrival_time());
}
if (attendeesTables.size() > 0) {
Call<DefaultResponse> call = RetrofitClient.getmInstance().getApi().updateAttendance(event_id,attendees,token);
call.enqueue(new Callback<DefaultResponse>() {
@Override
public void onResponse(Call<DefaultResponse> call, Response<DefaultResponse> response) {
Toast.makeText(EventsDetailsActivity.this, response.code()+"", Toast.LENGTH_SHORT).show();
Toast.makeText(EventsDetailsActivity.this, response.isSuccessful()+"", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<DefaultResponse> call, Throwable t) {
Toast.makeText(EventsDetailsActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
我是否以正确的方式做每一件事?我得到请求代码 400(错误请求)
解决方案
您的参数不正确,这就是您收到 400 错误的原因。尝试如下
要求 :
@FormUrlEncoded
@POST("vendor/event/{id}/checkin")
Call<DefaultResponse> updateAttendance(
@Path("id") int id,
@Field("attendees") String attendees,
@Field("token") String token);
API调用:
JSONArray attendeesArray=new JSONArray();
for (int i = 0; i < attendeesTables.size(); i++){
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",String.valueOf(attendeesTables.get(i).getId()));
jsonObject.put("arrival_time",String.valueOf(attendeesTables.get(i).getArrival_time()));
attendeesArray.put(jsonObject);
}
if (attendeesTables.size() > 0) {
Call<DefaultResponse> call = RetrofitClient.getmInstance().getApi().updateAttendance(event_id,attendeesArray.toString(),token);
call.enqueue(new Callback<DefaultResponse>() {
@Override
public void onResponse(Call<DefaultResponse> call, Response<DefaultResponse> response) {
Toast.makeText(EventsDetailsActivity.this, response.code()+"", Toast.LENGTH_SHORT).show();
Toast.makeText(EventsDetailsActivity.this, response.isSuccessful()+"", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<DefaultResponse> call, Throwable t) {
Toast.makeText(EventsDetailsActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
推荐阅读
- python - 如果使用 python 和子进程从 pycharm 调用,gsutil 不起作用,“无法导入名称 _common”
- sql - 如何根据Oracle中的其他列获取列的不同值
- javascript - Ramda,检查字符串是否有效
- swift - 如何在滚动时更改 UIView 大小并延迟
- python - 快速获取字典列表中的键的方法
- ios - 单击按钮时从表格中删除单元格
- amazon-web-services - Jenkins 管道输出从 aws 到 for 循环
- java - 如何在不丢失子节点的情况下替换现有节点中的信息?
- javascript - 我在可视化组合和问题的递归调用时遇到了一些麻烦?
- c# - 使用队列在两个 BackgroundWorker 之间传递数据