我不想修复@Field 名称来发送订单。我需要像这样发送到服务器 Key is 440005
and Value is 3,Juice,
该数据存在于 sqlite 数据库中。 440005 是 demo,实际上调用 String code = cart.getSubMenuItemCode()
3 是 cart.getQty()
而 Juice 是 cart.getName()
现在,我测试索引 0 以发送 1 行,但实际上我想发送多行。
应用程序接口(interface),
@FormUrlEncoded
@POST("/Order/Order")
void postOrder(@Field("table_no") String table,
@Field("waiter_no") String waiter,
@Field("440005") String code, // demo 440005
Callback<Message> callback);
添加到购物车 Activity ,
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Cart> carts = db.getAllCarts();
/*for (Cart cart : carts) {
Log.d("item_code", cart.getSubMenuItemCode());
Log.d("qty", cart.getQty());
Log.d("description", cart.getName());
}*/
StringBuilder result = new StringBuilder();
result.append(carts.get(0).getQty()).append(",");
result.append(carts.get(0).getName()).append(",");
NetworkEngine.getInstance().postOrder(tableNo, waiterNo, result.toString(), new Callback<Message>() {
@Override
public void success(Message message, Response response) {
Toasty.success(CartActivity.this, "OK", Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError error) {
}
});
}
});
[ postman ]
最佳答案
解决方案:使用@FieldMap注解
第 1 步:更改服务界面中的方法
@FormUrlEncoded
@POST("/Order/Order")
void postOrder(@Field("table_no") String table_no, @Field("waiter_no") String waiter_no, @FieldMap Map<String, String> order,
Callback<Message> callback);
第 2 步:创建您的订单图
Map<String, String> order = new HashMap<>();
order.put("440055", "5, Noodle");
order.put("440057", "2, Salad Soup");
order.put("440059", "1, Champagne");
// Put more data here if you want
...
第 3 步:将 map 传递给您的改造方法
NetworkEngine.getInstance().postOrder("table_1", "waiter_47", order, new Callback<Message>() {
@Override
public void success(Message message, Response response) {
Toasty.success(CartActivity.this, "OK", Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError error) {
}
});
关于android - 如何在 android retrofit 1.9 中从 List 发送多个 @Field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49975843/