Я использую retrofit2 для создания запроса на запись для сохранения данных в формате json.Я настроил все после этой демонстрации , но почтовый запрос никогда не возвращает успех или даже сбой.Я добавил тосты, чтобы посмотреть, не получится или не получится, но я их никогда не вижу.Любая помощь будет приветствоваться.
это мой класс RetrofitClient:
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String baseUrl) {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
это мой интерфейс службы Api:
import com.community.jboss.visitingcard.Data.model.VisitingCard;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface APIService {
@POST("/posts")
@FormUrlEncoded
Call<VisitingCard> saveVisitingCard(@Field("name") String name,
@Field("email") String email,
@Field("number") String number,
@Field("id") int id,
@Field("adress") String adress);
}
это мой класс ApiUtils:
public class ApiUtils {
private ApiUtils() {}
public static final String BASE_URL =
"http://jsonplaceholder.typicode.com/";
public static APIService getAPIService() {
return RetrofitClient.getClient(BASE_URL).create(APIService.class);
}
}
это моя модель:
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class VisitingCard {
@SerializedName("name")
@Expose
private String name;
@SerializedName("email")
@Expose
private String email;
@SerializedName("number")
@Expose
private String number;
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("adress")
@Expose
private String adress;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumber(){
return number;
}
public void setNumber(String number){
this.number = number;
}
public String getAdress(){
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
}
это код, который я использую для запуска почтового запроса в основном действии:
в методе OnCreate:
mAPIService = ApiUtils.getAPIService();
Когда я нажимаю кнопку Сохранить, этот код выполняется:
private void sendVisitCard(SharedPreferences settings) {
mAPIService.saveVisitingCard(
settings.getString("card_name",""),
settings.getString("card_email",""),
settings.getString("card_phone",""),
1,
settings.getString("card_address", "") ).enqueue(new Callback<VisitingCard>() {
@Override
public void onResponse(Call<VisitingCard> call,
Response<VisitingCard> response) {
if(response.isSuccessful()) {
Toast.makeText(VisitingCardActivity.this,"Successfully
stored your visiting card",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<VisitingCard> call, Throwable t) {
Toast.makeText(VisitingCardActivity.this,"error while storing
your visiting card",Toast.LENGTH_SHORT).show();
}
});
}
Это значение response.errorBody (). String () Ошибка:
Error: Insert failed, duplicate id
at Function.insert (/app/node_modules/lodash-id/src/index.js:49:18)
at /app/node_modules/lodash/lodash.js:4388:28
at arrayReduce (/app/node_modules/lodash/lodash.js:683:21)
at baseWrapperValue (/app/node_modules/lodash/lodash.js:4387:14)
at LodashWrapper.wrapperValue (/app/node_modules/lodash/lodash.js:9050:14)
at create (/app/node_modules/json-server/lib/server/router/plural.js:221:52)
at Layer.handle [as handle_request]
(/app/node_modules/express/lib/router/layer.js:95:5)
at next (/app/node_modules/express/lib/router/route.js:137:13)
at next (/app/node_modules/express/lib/router/route.js:131:14)
at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)
это значениеv ответа.код: 500