Search code examples
androidgatewayvelo

Retrofit request causes "TransactionTooLargeException"


I want to make an online store application but I don't have my own website, I tried to integrate Paypal gateway but I couldn't I always get Bad Request:/now I I am trying to integrate Wix REST Api with android using retrofit but I also get a bad request! and when I made some changes the application crashed, here is the desired request form

curl 'https://www.wixapis.com/stores/v2/orders' \
--data-binary '{
             "order": {
               "totals": {
                 "subtotal": "10",
                 "total": "10"
               },
               "billingInfo": {
                 "address": {
                   "email": "[email protected]"
                 }
               },
               "shippingInfo": {
                 "shipmentDetails": {
                   "address": {
                     "email": "[email protected]"
                   }
                 }
               },
               "paymentStatus": "PAID",
               "lineItems": [
                 {
                   "quantity": 1,
                   "name": "my product",
                   "priceData": {
                     "price": "10"
                   }
                 }
               ],
               "channelInfo": {
                 "type": "WEB"
               }
             }
           }' \
   -H 'Content-Type: application/json' \
   -H 'Authorization: nlWBX5XkeD0rsXxVLhAkJgme- OZjkku8LzPG2LmVZBs.eyJpbnN0YW5jZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OWU3ZjljIiwiYXBwRGVmSWQiOiIyMmJlZjM0NS0zYzViLTRjMTgtYjc4Mi03NGQ0MDg1MTEyZmYiLCJtZXRhU2l0ZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OWU3ZjljIiwic2lnbkRhdGUiOiIyMDIwLTA5LTE3VDEwOjQyOjM2LjYwMVoiLCJ1aWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOGFiNy1mNGY1M2FmNTE0NGQiLCJwZXJtaXNzaW9ucyI6Ik9XTkVSIiwiZGVtb01vZGUiOmZhbHNlLCJzaXRlT3duZXJJZCI6IjZmYmQ3ZjVmLWRmNTktNDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsInNpdGVNZW1iZXJJZCI6IjZmYmQ3ZjVmLWRmNTktNDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsImV4cGlyYXRpb25EYXRlIjoiMjAyMC0wOS0xN1QxNDo0MjozNi42MDFaIiwibG9naW5BY2NvdW50SWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOGFiNy1mNGY1M2FmNTE0NGQifQ'

I first sent the data using FieldMap annotation but I got Bad Request so I used JsonArray but I got TransactionTooLarge exception, here is the code

 String Url = "https://www.wixapis.com/";
    Gson gson = new GsonBuilder().setLenient().create();
    Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(Url).build();
    orderRequest Order = retrofit.create(orderRequest.class);
    JsonObject Data = new JsonObject();

    JsonObject totals = new JsonObject();
    JsonArray lineItems = new JsonArray();
    JsonObject itemsObject = new JsonObject() ;
    JsonObject priceData = new JsonObject();
    priceData.addProperty("price","10");
    itemsObject.addProperty("quantity","1");
    itemsObject.addProperty("name","Product");
    itemsObject.add("priceData",priceData);
    lineItems.add(itemsObject);
    totals.addProperty("total","10");
    totals.addProperty("subtotal","10");
    Data.add("totals",totals);
    Data.add("lineItems",lineItems);
    JsonObject bigData = new JsonObject();
    bigData.add("order",bigData);
    Order.Order("application/json","nlWBX5XkeD0rsXxVLhAkJgme-OZjkku8LzPG2LmVZBs.eyJpbnN0YW5jZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OW" +
                    "U3ZjljIiwiYXBwRGVmSWQiOiIyMmJlZjM0NS0zYzViLTRjMTgtYjc4Mi03NGQ0MDg1MTEyZmYiLCJtZXRhU2l0ZUlkIjoiNjI0MDEyYjctMzQ5YS00MTEwLWE0NjQtN2M5NjY3OWU3" +
                    "ZjljIiwic2lnbkRhdGUiOiIyMDIwLTA5LTE3VDEwOjQyOjM2LjYwMVoiLCJ1aWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOGFiNy1mNGY1M2FmNTE0NGQiLCJwZXJtaXNzaW9ucyI6Ik9" +
                    "XTkVSIiwiZGVtb01vZGUiOmZhbHNlLCJzaXRlT3duZXJJZCI6IjZmYmQ3ZjVmLWRmNTktNDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsInNpdGVNZW1iZXJJZCI6IjZmYmQ3ZjVmLWRmNTkt" +
                    "NDNlNi04YWI3LWY0ZjUzYWY1MTQ0ZCIsImV4cGlyYXRpb25EYXRlIjoiMjAyMC0wOS0xN1QxNDo0MjozNi42MDFaIiwibG9naW5BY2NvdW50SWQiOiI2ZmJkN2Y1Zi1kZjU5LTQzZTYtOG" +
                    "FiNy1mNGY1M2FmNTE0NGQifQ",
            bigData).enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {
            try {
                Log.d("RESPONSE",response.errorBody().string()+call.request().toString());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {

        }
    });

Here is the retrofit interface if needed

@POST("stores/v2/orders")
Call<String> Order(@Header("Content-Type") String ContentType, @Header("Authorization")String Auth, @Body JsonObject Order );

Solution

  • You are adding bigdata in bigdata in your json object

    i think you need to replace this

    JsonObject bigData = new JsonObject();
        bigData.add("order",bigData);
    

    with this

      JsonObject bigData = new JsonObject();
            bigData.add("order",Data );