Модификация, Gson, анализ данных на сервер из пользовательского файла jsonfile - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь работать с модификацией для анализа пользовательских данных JSON с Gson на локальный сервер с помощью REST API.

это результат, который я искал:

{
"user_id": 2,
"product": {
    "id": 15,
    "item_count": 99
    }
}

Ниже интерфейс, который я создал

public interface APIService {

@POST("/products")

@FormUrlEncoded
Call<Product> savePost(@Header("Token")String authKey,
                    @Field("product") Object product,
                    @Field("userId") String userId);
}

вот функция, которую я использую для отправки данных

// string that i use to call the classes

        String userID;
        String authKey;

        mAPIService = ApiUtils.getAPIService();
        mProduct = new Product();
        mProduct.setId(productID);
        mProduct.setItemCount(numberOfItems.getText().toString().trim());
        final String stringMProduct = mProduct.toString();

        sendPost(userID, stringMProduct, authKey);

// the function that parses all the data

public void sendPost( String userID, String product, String authKey ) {
    mAPIService.savePost(authKey, userID, product).enqueue(new Callback<Product>() {

        @Override
        public void onResponse(Call<Product> call, retrofit2.Response<Product> response) {
            if(response.isSuccessful()) {
                showResponse(response.body().toString());
                Log.i(TAG, "post submitted to API." + response.body().toString());
            }
        }

        @Override
        public void onFailure(Call<Product> call, Throwable t) {
            Log.e(TAG, "Unable to submit post to API.");
        }
    });
}

вот классы, которые я использую Gson для анализа данных в json

public class OrderRequest {

     @SerializedName("product")
     @Expose
     private Product product;
     @SerializedName("user_id")
     @Expose
     private String userId;

     public Product getProduct() {
         return product;
     }

     public void setProduct(Product product) {
         this.product = product;
     }

     public String getUserId() {
         return userId;
     }

     public void setUserId(String userId) {
         this.userId = userId;
     }

     @Override

     public String toString() {
         return "OrderRequest{" +
                 "product=" + product +
                 ", userId='" + userId + '\'' +
        '}';
    }
}

другой класс Gcode.

Public class Product {

    @SerializedName("item_count")
    @Expose
    private String itemCount;
    @SerializedName("id")
    @Expose
    private String id;

    public String getItemCount() {
        return itemCount;
    }

    public void setItemCount(String itemCount) {
        this.itemCount = itemCount;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Product{" +
                "itemCount='" + itemCount + '\'' +
                ", id='" + id + '\'' +
                '}';
    }
}

это весь код, который яиспользуя для анализа данных на сервере, я действительно запутался, как я должен отладить его или где полезная нагрузка, я знаю, что это дамп кода, и это не разрешено.бит, в котором я запутался, делает запрос post Cost битом, в котором вы можете иметь массив в массивах

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Например, какой URL вы устанавливаете для модернизации?Похоже, вы устанавливаете что-то вроде .. "http://something.com/something". Для модернизации требуется, чтобы используемый вами URL заканчивался на" / ". Я мог бы сказать, потому что ваш метод записи -" / products ". Что тогда, если вы установитеurl правильно будет "http://something.com/something//products"

Не только это.@formURLEncoded нельзя использовать с методами post.И с этим @field будет и должно это также работать ..

0 голосов
/ 07 декабря 2018

для массивов и данных другого типа вы можете отправлять данные внутри requestBody, а на стороне сервера вы можете легко сопоставить их с классом POJO, который вы создаете, с классом POJO, который совпадает с классом POJO, который вы отправляете.

...