エラー400が発生しているかどうかを確認するためにAPIをローカルサーバーと呼びます。このエラーは、期待どおりに発生します。この瞬間、私は価値を得たいと思っています。これはJSONオブジェクトです。 サーバーからのメッセージが到着していますが、しばらくしても値が表示されません。私はアプリをデバッグしているので、私はそれを知っている。 Retrofitのresponse.errorBody()。string()メッセージからの最初の応答では、文字列値がそこにあります。しかし、応答の直後に値はnullになります。私は何が起こっているのかをイメージで表現しました。値の更新が不可能な場合の返信
そして、私のコードです:
public class ServerResponse implements Parcelable {
@SerializedName("message")
private String message;
public ServerResponse(){}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(message);
}
public ServerResponse(String message){
this.message = message;
}
private ServerResponse(Parcel parcel){
message = parcel.readString();
}
public static final Parcelable.Creator<ServerResponse> CREATOR =
new Parcelable.Creator<ServerResponse>() {
public ServerResponse createFromParcel(Parcel in) {
return new ServerResponse(in);
}
public ServerResponse[] newArray(int size) {
return new ServerResponse[size];
}
};
public String getMessage(){
return message;
}
}
そして、これはコードの別の部分である:コードの最初の行の後に値が消えるのはなぜ
super.data.restApi(WorkOrderAPI.class)
.answerWorkOrder(
t,
workOrderId,
request.getQuestionFormId(),
isOffline ? 1 : 0,
request)
.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
if (response.isSuccessful()) {
onResult.onSuccessful(null);
} else {
try {
if(response.code() == 400) {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateTypeDeserializer())
.create();
ServerResponse serverResponse = gson.fromJson(response.errorBody().charStream(), ServerResponse.class);
onResult.onUnsuccessful(new DefaultError(response.code(), serverResponse.getMessage()));
}
?
最初の応答以降、本文はヌルです。そして、これは私のカッシーを運転する。私はそのコードを削除しますが、問題は解決しません。 – learner
エラーが見つかりました。あなたが言ったように、私はそれを2回消費しています。私はデバッグ時にそれを消費しています。それを写真で見てください。 – learner