2016-04-14 1 views
0

Ich möchte überprüfen, die Roh Json, die von Retrofit in meinem Enqueue Anruf gesendet wird. Hier geht der Code meines Click-Ereignis:Überprüfen Sie Json gesendet von Retrofit

  public void onClick(View v) { 
       ArrayList<Product> products = ((MenuAdapter)rvMenuProducts.getAdapter()).getOrderItens(); 
       ArrayList<Item> orderItemList = new ArrayList<Item>(); 
       for(Product p: products){ 
        orderItemList.add(new Item(p)); 
       } 
       EditText etCardNumber = (EditText) findViewById(R.id.et_card_number); 
       String cardNumber = etCardNumber.getText().toString(); 

       if(GenericUtils.stringIsNotNullAndNotEmpty(cardNumber)){ 
        NewOrder newOrder = new NewOrder(waiterId, establishmentId, cardNumber, orderItemList); 

        WaiterRequester.addOrder(newOrder, new Callback<AddOrderResultInfo>() { 
         @Override 
         public void onResponse(Call<AddOrderResultInfo> call, Response<AddOrderResultInfo> response) { 
          int a = 5; 

          Toast.makeText(context, "Pedido realizado com sucesso", Toast.LENGTH_SHORT).show(); 
         } 

         @Override 
         public void onFailure(Call<AddOrderResultInfo> call, Throwable t) { 
          int b = 5; 

          Toast.makeText(context, "VISH", Toast.LENGTH_SHORT).show(); 
         } 
        }); 
       } 
       else{ 
        etCardNumber.setError("ERROOOOOOO"); 
       } 
      } 

, dass es ist, wie ich meine API aufrufen, und ich bin immer etwas Ausnahme auf meinem api, dass ich nicht weiß, weil meine Rückkehr ein boolean ist jedoch wenn ich die Anfrage mit dem Postboten geschickt habe, funktioniert es! Hier

ist die json von Postbote gesendet:

{ 
    "newOrder": 
    { 
     "idWaiter" : 1, 
     "idEstablishment": 6, 
     "cardNumber": "123", 
     "listItem": [{ "idProduct": 1, "quantity": 1 }] 
    } 
} 

Wo ist meine Klasse NewOrder:

public class NewOrder { 

    public int idWaiter; 
    public long idEstablishment; 
    public String cardNumber; 
    public ArrayList<Item> listItem; 

    public NewOrder() { 
    } 

    public NewOrder(int idWaiter, long idEstablishment, String cardNumber, ArrayList<Item> listItem) { 
     this.idWaiter = idWaiter; 
     this.idEstablishment = idEstablishment; 
     this.cardNumber = cardNumber; 
     this.listItem = listItem; 
    } 

    public int getIdWaiter() { 
     return idWaiter; 
    } 

    public void setIdWaiter(int idWaiter) { 
     this.idWaiter = idWaiter; 
    } 

    public long getIdEstablishment() { 
     return idEstablishment; 
    } 

    public void setIdEstablishment(long idEstablishment) { 
     this.idEstablishment = idEstablishment; 
    } 

    public String getCardNumber() { 
     return cardNumber; 
    } 

    public void setCardNumber(String cardNumber) { 
     this.cardNumber = cardNumber; 
    } 

    public ArrayList<Item> getListItem() { 
     return listItem; 
    } 

    public void setListItem(ArrayList<Item> listItem) { 
     this.listItem = listItem; 
    } 
} 

und Item:

public class Item { 

    public long idProduct; 
    public int quantity; 

    public Item() { 
    } 

    public Item(Product p) { 
     this.setQuantity(p.getQuantity()); 
     this.setIdProduct(p.getIdProduct()); 
    } 

    public Item(int idProduct, int quantity) { 
     this.idProduct = idProduct; 
     this.quantity = quantity; 
    } 

    public long getIdProduct() { 
     return idProduct; 
    } 

    public void setIdProduct(long idProduct) { 
     this.idProduct = idProduct; 
    } 

    public int getQuantity() { 
     return quantity; 
    } 

    public void setQuantity(int quantity) { 
     this.quantity = quantity; 
    } 
} 

EDIT:

Es kann nützlich sein, By Objekt ist arr Als Null im Backend.

Antwort

0

Es scheint mir, dass Sie Retrofit 2 verwenden und somit können Sie einen Interceptor machen, um alle Ihre Anfragen zu protokollieren.

hinzufügen 'com.squareup.okhttp3:logging-interceptor:3.2.0' auf Ihre Abhängigkeit und bauen Sie Ihre OkHttpClient wie folgt aus:

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build(); 
+0

Wie exaclty kann ich diese Protokolle drucken? – guisantogui

+0

Wenn Sie den obigen Code verwenden, werden die Protokolle automatisch in Ihrem Logcat gedruckt –

+0

Nicht hier gedruckt: / – guisantogui