在请求正文中发送数组不起作用:使用改造 2.1.0 [英] Sending an array in request body is not working : Using retrofit 2.1.0

查看:42
本文介绍了在请求正文中发送数组不起作用:使用改造 2.1.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在将CustomDishItems"作为数组发送时,它给出了结果:服务器在处理请求时遇到错误

while sending "CustomDishItems" as array it is giving result : The server encountered an error processing the request

它适用于:CustomDishItems":"

it works for : "CustomDishItems": ""

以下是我使用 PHP 网络服务在服务器上POST"所需的数据

Following is my required data to "POST" on server using PHP web-service

服务网址:

http://saavorapi.parkeee.net/API/KitchenService.svc/DishInsertUpdate

请求正文:

{
    "AvailableFrom": "",
    "AvailableQty": "1",
    "AvailableTill": "Enter custom Date",
    "AvailableTo": "Jun 15, 2017",
    "Calories": "100",
    "Category": "nonVeg",
    "CreateDate": "May 31, 2017 12:10 PM",
    "CuisineId": "113",
    "CustomDishItems": [{
        "Cost": "100",
        "ItemName": "salted"
    }, {
        "Cost": "120",
        "ItemName": "sweet"
    }],
    "Customizable": "true",
    "Description": "test",
    "DishId": "0",
    "DishName": "test",
    "Ingredeients": "test",
    "MenuTitle": "menu1",
    "PreparingTime": "58",
    "Price": "100",
    "ProfileId": "227",
    "SessionToken": "97801380243422832"
}

Java 代码是:

private void addDish() {

private void addDish() {

    CustomDishField customDishField = new CustomDishField(itemNameEt.getText().toString(), itemCostEt.getText().toString());

    ArrayList<CustomDishField> customDishArrayList = new ArrayList<>();
    customDishArrayList.add(customDishField);

    final int childcount = container.getChildCount();
    for (int i = 0; i < childcount; i++) {
        View v = container.getChildAt(i);

        EditText itemCostEt = (EditText) v
                .findViewById(R.id.itemCostEt);
        EditText itemNameEt = (EditText) v
                .findViewById(R.id.itemNameEt);

        customDishArrayList.add(new CustomDishField(itemNameEt.getText().toString(), itemCostEt.getText().toString()));


    }


    AddDish addDish = new AddDish(availableFrom, availableQuantity, availableTill, availableTo,
            calories, Category
            , createDate, cuisineId, customDishArrayList, Customizable, Description,
            DishId, dishNameString, Ingredeients, MenuTitle, PreparingTime,
            Price, ProfileId, SessionToken);
    Call call = apiInterface.addDish(addDish);

    call.enqueue(new Callback() {
        @Override
        public void onResponse(Call call, retrofit2.Response response) {
            Log.d("TAG", response.code() + "");

            Response response1 = (Response) response.body();


           if (((Response) response.body()).getReturnCode().equals("1")) {

               Toast.makeText(AddDishActivity.this, "" + ((Response)
                               response.body()).getReturnMessage(),
                       Toast.LENGTH_SHORT).show();
               progressBar.setVisibility(View.GONE);
               finish();

               Intent intent = new Intent(AddDishActivity.this, ManageKitchen.class);
               startActivity(intent);

            } else {
                Toast.makeText(AddDishActivity.this, "" + ((Response)
                                response.body()).getReturnCode(),
                        Toast.LENGTH_SHORT).show();
               progressBar.setVisibility(View.GONE);
            }


        }

        @Override
        public void onFailure(Call call, Throwable t) {
            Log.d("TAG", "call cancel");
            call.cancel();
            progressBar.setVisibility(View.GONE);
        }
    });
}

AddDish.Java

AddDish.Java

公共类 AddDish {

public class AddDish {

@SerializedName("AvailableFrom")
@Expose
private String availableFrom;
@SerializedName("AvailableQty")
@Expose
private String availableQty;
@SerializedName("AvailableTill")
@Expose
private String availableTill;
@SerializedName("AvailableTo")
@Expose
private String availableTo;
@SerializedName("Calories")
@Expose
private String calories;
@SerializedName("Category")
@Expose
private String category;
@SerializedName("CreateDate")
@Expose
private String createDate;
@SerializedName("CuisineId")
@Expose
private String cuisineId;
@SerializedName("CustomDishItems")
@Expose
private ArrayList<CustomDishField> customDishItems;
@SerializedName("Customizable")
@Expose
private String customizable;
@SerializedName("Description")
@Expose
private String description;
@SerializedName("DishId")
@Expose
private String dishId;
@SerializedName("DishName")
@Expose
private String dishName;
@SerializedName("Ingredeients")
@Expose
private String ingredeients;
@SerializedName("MenuTitle")
@Expose
private String menuTitle;
@SerializedName("PreparingTime")
@Expose
private String preparingTime;
@SerializedName("Price")
@Expose
private String price;
@SerializedName("ProfileId")
@Expose
private String profileId;
@SerializedName("SessionToken")
@Expose
private String sessionToken;


public AddDish(String availableFrom, String availableQty,
               String availableTill, String availableTo, String calories,
               String category, String createDate, String cuisineId,
               ArrayList<CustomDishField> customDishItems, String customizable,
               String description, String dishId, String dishName,
               String ingredeients, String menuTitle, String preparingTime,
               String price, String profileId, String sessionToken) {

    this.availableFrom = availableFrom;
    this.availableQty = availableQty;
    this.availableTill = availableTill;
    this.availableTo = availableTo;
    this.calories = calories;
    this.category = category;
    this.createDate = createDate;
    this.cuisineId = cuisineId;
    this.customDishItems = customDishItems;
    this.customizable = customizable;
    this.description = description;
    this.dishId = dishId;
    this.dishName = dishName;
    this.ingredeients = ingredeients;
    this.menuTitle = menuTitle;
    this.preparingTime = preparingTime;
    this.price = price;
    this.profileId = profileId;
    this.sessionToken = sessionToken;
}

public String getAvailableFrom() {
    return availableFrom;
}

public void setAvailableFrom(String availableFrom) {
    this.availableFrom = availableFrom;
}

public String getAvailableQty() {
    return availableQty;
}

public void setAvailableQty(String availableQty) {
    this.availableQty = availableQty;
}

public String getAvailableTill() {
    return availableTill;
}

public void setAvailableTill(String availableTill) {
    this.availableTill = availableTill;
}

public String getAvailableTo() {
    return availableTo;
}

public void setAvailableTo(String availableTo) {
    this.availableTo = availableTo;
}

public String getCalories() {
    return calories;
}

public void setCalories(String calories) {
    this.calories = calories;
}

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public String getCreateDate() {
    return createDate;
}

public void setCreateDate(String createDate) {
    this.createDate = createDate;
}

public String getCuisineId() {
    return cuisineId;
}

public void setCuisineId(String cuisineId) {
    this.cuisineId = cuisineId;
}

public ArrayList<CustomDishField> getCustomDishItems() {
    return customDishItems;
}

public void setCustomDishItems(ArrayList<CustomDishField> customDishItems) {
    this.customDishItems = customDishItems;
}

public String getCustomizable() {
    return customizable;
}

public void setCustomizable(String customizable) {
    this.customizable = customizable;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getDishId() {
    return dishId;
}

public void setDishId(String dishId) {
    this.dishId = dishId;
}

public String getDishName() {
    return dishName;
}

public void setDishName(String dishName) {
    this.dishName = dishName;
}

public String getIngredeients() {
    return ingredeients;
}

public void setIngredeients(String ingredeients) {
    this.ingredeients = ingredeients;
}

public String getMenuTitle() {
    return menuTitle;
}

public void setMenuTitle(String menuTitle) {
    this.menuTitle = menuTitle;
}

public String getPreparingTime() {
    return preparingTime;
}

public void setPreparingTime(String preparingTime) {
    this.preparingTime = preparingTime;
}

public String getPrice() {
    return price;
}

public void setPrice(String price) {
    this.price = price;
}

public String getProfileId() {
    return profileId;
}

public void setProfileId(String profileId) {
    this.profileId = profileId;
}

public String getSessionToken() {
    return sessionToken;
}

public void setSessionToken(String sessionToken) {
    this.sessionToken = sessionToken;
}

}

CustomDishField.Java 类是:

CustomDishField.Java Class is :

公共类 CustomDishField {

public class CustomDishField {

@SerializedName("ItemName")
@Expose
private String ItemName;
@SerializedName("Cost")
@Expose
private String Cost;

public CustomDishField(String itemName, String cost) {
    ItemName = itemName;
    Cost = cost;
}

public String getItemName() {
    return ItemName;
}

public void setItemName(String itemName) {
    ItemName = itemName;
}

public String getCost() {
    return Cost;
}

public void setCost(String cost) {
    Cost = cost;
}

}

推荐答案

使用以下代码将 Arraylist 转换为字符串并且工作正常:

Converted Arraylist to string using following code and its working fine:

Gson gson = new Gson();String customDishListString= gson.toJson(customDishArrayList);

Gson gson = new Gson(); String customDishListString= gson.toJson(customDishArrayList);

这篇关于在请求正文中发送数组不起作用:使用改造 2.1.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆