android - 发布请求改造 java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 2 行第 1 列路径 $
问题描述
我想发布这个对象
public class EditTask {
@SerializedName("id")
private int id;
@SerializedName("active")
private int active;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getActive() {
return active;
}
public void setActive(int active) {
this.active = active;
}
public EditTask(int id, int active) {
this.id = id;
this.active = active;
}
我的 API:
public interface TaskApi {
@GET("func.php?load")
Call<List<Task» getTaskList();
@FormUrlEncoded
@POST("func.php?add")
Call<String> addTask(@Field("name") String name);
@POST("func.php?edit")
Call<EditTask> editTask(@Body EditTask editTask);
我的仓库:
public class TaskRepository {
private static TaskRepository taskRepository;
public static TaskRepository getInstance() {
if (taskRepository == null) {
taskRepository = new TaskRepository();
}
return taskRepository;
}
private TaskApi taskApi;
public TaskRepository() {
taskApi = RetrofitService.createService(TaskApi.class);
}
public void editTask(int id, int active) {
EditTask editTask = new EditTask(id, active);
taskApi.editTask(editTask).enqueue(new Callback<EditTask>() {
@Override
public void onResponse(Call<EditTask> call, Response<EditTask> response) {
Log.i("Artemy", "cool");
}
@Override
public void onFailure(Call<EditTask> all, Throwable t) {
Log.i("Artemy", "notcool");
}
});
}
我的改造服务:
public class RetrofitService {
private static Gson gson = new GsonBuilder()
.setLenient()
.create();
private static Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://loginov.tech/android/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
public static <S> S createService(Class<S> serviceClass) {
return retrofit.create(serviceClass);
}
我的视图模型:
public class TaskViewModel extends ViewModel {
private MutableLiveData<List<Task»mutableLiveData;
private TaskRepository taskRepository;
public void init() {
if (mutableLiveData != null) {
return;
}
taskRepository = TaskRepository.getInstance();
mutableLiveData = taskRepository.getTasks();
}
public LiveData<List<Task»
getTaskRepository() {
return mutableLiveData;
}
public void addTask(String name) {
taskRepository.addTask(name);
}
public void editTask(int id, int active) {
taskRepository.editTask(id, active);
}
} 主要活动:
public class TaskViewModel extends ViewModel {
private MutableLiveData<List<Task»mutableLiveData;
private TaskRepository taskRepository;
public void init() {
if (mutableLiveData != null) {
return;
}
taskRepository = TaskRepository.getInstance();
mutableLiveData = taskRepository.getTasks();
}
public LiveData<List<Task»
getTaskRepository() {
return mutableLiveData;
}
public void addTask(String name) {
taskRepository.addTask(name);
}
public void editTask(int id, int active) {
taskRepository.editTask(id, active);
}
我必须创建对服务器的发布请求并发布 int id 和 int 活动参数。但我总是收到错误:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 2 column 1 path 我也尝试发布 EditTasks 列表用@FormUrlEncoded 发帖没有帮助。
解决方案
推荐阅读
- ios - UIButton press 不适用于 IF 语句
- python - 单击后如何删除内联键盘?(Python)
- c# - 更改实时图表圆圈大小
- node.js - Hyperledger - 作曲家 REST API 或提交交易以添加/修改资产?
- logstash - 确定 logstash 管道是否完整
- javascript - Bootstrap 4 Carousel: Individual data-interval on each slide
- hadoop - java.net.ConnectException:您的端点配置错误;
- android - Firebase 动态链接社交图片未显示,链接在 Instagram 等某些应用中不可点击
- c# - dnn 7.4.2 构建引用丢失
- c - 了解有关结构数组的 Malloc 和 Realloc