Я отправляю данные на сервер, используя HttpURLConnection, и он работает правильно.
JSON, который я отправляю, выглядит следующим образом:
{
"name":"Product X",
"desc":"abcdef",
"barCode":"",
"quantity":123,
"esExtra":false,
"idUnit":3,
"idDept":13,
"idCat":60,
"idSubcat":0,
"costP":1.96,
"costS":2.69,
"idEmp":3,
"image":"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/Z\n",
"taxes":[
{
"id":1
}
]
}
Для модернизации класс, связанный с JSON, выглядит следующим образом:
public class ActionRegisterProductService {
@SerializedName("name")
public String name;
@SerializedName("desc")
public String desc;
@SerializedName("barCode")
public String barCode;
@SerializedName("quantity")
public Integer quantity;
@SerializedName("esExtra")
public Boolean esExtra;
@SerializedName("idUnit")
public Integer idUnit;
@SerializedName("idDept")
public Integer idDept;
@SerializedName("idCat")
public Integer idCat;
@SerializedName("idSubcat")
public Integer idSubcat;
@SerializedName("costP")
public Double costP;
@SerializedName("costS")
public Double costS;
@SerializedName("idEmp")
public Integer idEmp;
@SerializedName("image")
public String image;
@SerializedName("taxes")
public List<Taxes> listTaxes = null;
public ActionRegisterProductService(
String name,
String desc,
String barCode,
int quantity,
boolean esExtra,
int idUnit,
int idDept,
int idCat,
int idSubcat,
double costP,
double costS,
int idEmp,
String image,
List<Taxes> listTaxes,
){
this.name = name;
this.desc = desc;
this.barCode = barCode;
this.quantity = quantity;
this.esExtra = esExtra;
this.idUnit = idUnit;
this.idDept = idDept;
this.idCat = idCat;
this.idSubcat = idSubcat;
this.costP = costP;
this.costS = costS;
this.idEmp = idEmp;
this.image = image;
this.listTaxes = listTaxes;
}
}
}
Для отправки данных я делаю следующее:
apiInterface = APIClient.getClient().create(APIInterface.class);
ActionRegisterProductService actionRegisterProductService =
new ActionRegisterProductService (
"Product X",
"abcd",
"",
123,
false,
5,
1,
3,
0,
1.23,
4.25,
3,
"/9j\/4AAQSkZJRgABAQAAAQABAAD\/Z\n",
mylistTaxes,
);
затем выполняется следующее:
Call<ActionRegisterProductService> call = apiInterface.createProduct(actionRegisterProductService);
call.enqueue(new Callback<ActionRegisterProductService>() {
@Override
public void onResponse(Call<ActionRegisterProductService> call, Response<ActionRegisterProductService> response) {
ActionRegisterProductService user1 = response.body();
if (response.raw().code() == 200 && response.raw().message().toLowerCase().equals("ok")) {
}
}
@Override
public void onFailure(Call<ActionRegisterProductService> call, Throwable t) {
call.cancel();
}
});
При выполнении строк над сервером сервер отвечает правильно, т.е. response.raw () .Code равен 200, а response.raw.Message равен OK.
Но при выполнении другого метода (из старого способа) для получения созданных продуктов, продукт, созданный с помощью Retrofit, не появляется. Если это делается с помощью метода HttpURLConnection, он работает правильно, именно по этой причине я подозреваю, что JSON создается неправильно.
apiInterface.createProduct выглядит следующим образом:
public interface APIInterface {
@POST("Product")
Call<ActionRegisterProductService> createProduct(@Body ActionRegisterProductService actionRegisterProductService);
}
Есть предложения или комментарии?
UPDATE
Кажется, что я не выполняю фундаментальное условие, которое указывает, что должен быть класс для отправки данных, такой как класс для приема (он не обязательно должен быть таким же)
Call<MyResponseClass> sendDataToServer(@Body MyRequestClass myModal);
Основные условия