2016-10-03 1 views
1

i m new about Re-Fit Library, и я хочу знать, что лучше, чем отправить объект с почтовым методом модификации.Retrofit 2 Отправить объект с POST

Вот он какой-то код.

Мой класс:

public class ExampleClass implements Serializable { 

    @SerializedName("id") 
    int id; 


    @SerializedName("name") 
    String name; 

    public ExampleClass(int id, String name) { 
     this.id = id; 
     this.name= name; 
    } 

} 

Мой интерфейс:

public interface ApiInterface { 
    @Headers("Content-Type: application/json") 
    @POST("getclass/") 
    Call<ExampleClass> getExampleClass(@Body ExampleClass exampleClass); 
} 

Мой вызов с дооснащения:

...... 
     ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class); 
     Call<ExampleClass> call = apiService.getExampleClass(exampleClass); 
     call.enqueue(new Callback<ExampleClass>() { 
      @Override 
      public void onResponse(Call<ExampleClass> call, Response<ExampleClass> response) { 

       int statusCode = response.code(); 

       Log.i(TAG, "Status Code: " + statusCode); 

      } 

      @Override 
      public void onFailure(Call<ExampleClass> call, Throwable t) { 
       Log.i(TAG, "Error: " + t.toString()); 
      } 

     }); 

Но каждый раз, когда он вернуть мне код состояния 500.

Может кто-нибудь дать мне идентификатор ea для отправки объекта с модификацией?

+1

добавьте трассировку стека –

+0

пожалуйста, добавьте ADB журналы также. –

+0

Вы добавили конвертер Gson или Jackson в свой экземпляр модификации? – nexus5x

ответ

1

Вы можете отправить его с помощью @FormUrlEncoded, например:

@FormUrlEncoded 
@Headers("Content-Type: application/json") 
@POST("getclass/") 
Call<ExampleClass> getExampleClass(@Field("id") int id, @Field("name") String name); 

, но я думаю, что ваш путь простой и правильный.

Если вы не ленивы, вы можете найти все о модернизации here

0
  1. Является ли ваш сервер API работает правильно?

    HTTP status 500 means internal server error. Сначала проверьте сервер API с надежным клиентом. Взгляните на журналы ошибок на сервере и убедитесь, что какая-либо причина проблемы.

  2. Вы добавили конвертер Gson или Jackson в свой модифицированный экземпляр?

    Если ваш сервер чист, то клиент, ваше приложение имеет проблемы. Отвратительный орган запроса мог вызвать ошибку сервера.

    Вы добавили конвертер Gson (или Jackson)? Ваша аннотация @Headers автоматически не преобразует ваш объект в json. Если ваш сервер ожидает json для запроса, вы не отправляете «объект», а строку json-представления объекта. Внедрение интерфейса Serializable не требуется. Конвертер Gons автоматически преобразует произвольный объект в json, если вы его добавите, или вы должны использовать RequestBody.

    От Retrofit github page (REQUEST BODY section):

    Если нет преобразователя не добавляется, может быть использован только RequestBody.

0

500 Внутренняя ошибка сервера

Код состояния 500, или внутренняя ошибка сервера, означает, что сервер не может обработать запрос по неизвестной причине. Иногда этот код появляется, когда более конкретные ошибки 5xx более уместны.

Эта наиболее распространенная причина этой ошибки - неправильная конфигурация сервера (например, неверный файл .htaccess) или отсутствующие пакеты (например, попытка выполнить PHP-файл без установки PHP правильно).

Вы можете просмотреть it.Itis работает нормально для меня

Api ИНТЕРФЕЙС класса

public interface ApiInterface { 

    @FormUrlEncoded 
     @POST("/billingrest/save") 
     Call<LoginError> sendProductList(@Body SaveBill saveBill); 

} 

SaveBill модели

package com.example.dev.billingsoftware.model; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

import java.util.List; 

/** 
* Created by dev on 4/8/17. 
*/ 
public class SaveBill { 

    @SerializedName("customer_name") 
    @Expose 
    private String customerName; 
    @SerializedName("customer_id") 
    @Expose 
    private String customerId; 
    @SerializedName("bill_number") 
    @Expose 
    private String billNumber; 
    @SerializedName("mobile_number") 
    @Expose 
    private String mobileNumber; 
    @SerializedName("bill_date") 
    @Expose 
    private String billDate; 
    @SerializedName("address") 
    @Expose 
    private String address; 
    @SerializedName("count") 
    @Expose 
    private String count; 
    @SerializedName("data") 
    @Expose 
    private List<BillData> data = null; 

    public String getCustomerName() { 
     return customerName; 
    } 

    public void setCustomerName(String customerName) { 
     this.customerName = customerName; 
    } 

    public String getCustomerId() { 
     return customerId; 
    } 

    public void setCustomerId(String customerId) { 
     this.customerId = customerId; 
    } 

    public String getBillNumber() { 
     return billNumber; 
    } 

    public void setBillNumber(String billNumber) { 
     this.billNumber = billNumber; 
    } 

    public String getMobileNumber() { 
     return mobileNumber; 
    } 

    public void setMobileNumber(String mobileNumber) { 
     this.mobileNumber = mobileNumber; 
    } 

    public String getBillDate() { 
     return billDate; 
    } 

    public void setBillDate(String billDate) { 
     this.billDate = billDate; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getCount() { 
     return count; 
    } 

    public void setCount(String count) { 
     this.count = count; 
    } 

    public List<BillData> getData() { 
     return data; 
    } 

    public void setData(List<BillData> data) { 
     this.data = data; 
    } 

} 
Смежные вопросы