Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用改装REST API,获取非法状态异常:请帮助我调查_Java_Android_Retrofit2 - Fatal编程技术网

Java 无法使用改装REST API,获取非法状态异常:请帮助我调查

Java 无法使用改装REST API,获取非法状态异常:请帮助我调查,java,android,retrofit2,Java,Android,Retrofit2,我对安卓系统有点陌生,所以我真的很尴尬 当我尝试使用具有以下结构的API时,请参见下面的错误信息 错误 请告诉我如何使用API而不出现上述错误 请参阅下面的代码 改造客户端实例 登录数据服务 JSON失败响应 JSON成功响应 序列化的对象 请告诉我如何使用API,因为我已经为此绞尽脑汁一周了非常感谢 我修改了要序列化的响应对象,现在它工作了,我没有时间尝试重现错误。我看到的第一件事是UserOutputBj类是错误的。您的响应级别与其他字段相同,在json中,您有一个对象响应,其中包含其他字段

我对安卓系统有点陌生,所以我真的很尴尬

当我尝试使用具有以下结构的API时,请参见下面的错误信息

错误 请告诉我如何使用API而不出现上述错误

请参阅下面的代码

改造客户端实例 登录数据服务 JSON失败响应 JSON成功响应 序列化的对象 请告诉我如何使用API,因为我已经为此绞尽脑汁一周了

非常感谢


我修改了要序列化的响应对象,现在它工作了

,我没有时间尝试重现错误。我看到的第一件事是UserOutputBj类是错误的。您的响应级别与其他字段相同,在json中,您有一个对象响应,其中包含其他字段
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
public static Retrofit getLogInRetrofitInstance() {
        if (retrofit == null) {
            Gson gson = new GsonBuilder()
                    .setLenient()
                    .create();

            retrofit = new retrofit2.Retrofit.Builder()
                    .baseUrl(LOG_IN_BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface GetLogInDataService {
    @Headers("Content-Type: application/json")
    @POST("login")
    Call<UserOutputObj> getServiceData(@Body LoginInputObj input);
}
                GetLogInDataService service = RetrofitClientInstance.getLogInRetrofitInstance().create(GetLogInDataService.class);
                Call<UserOutputObj> call = service.getServiceData(myLoginInp);
                call.enqueue(new Callback<UserOutputObj>() {
                    @Override
                    public void onResponse(Call<UserOutputObj> call, Response<UserOutputObj> response) {
                        UserOutputObj finalOutput = response.body();
                        assert finalOutput != null;
                        UserInfo user = finalOutput.getUser();
                        Log.d(TAG, "onResponse: user:" + user);
                        Login_Token = finalOutput.getToken();
                        Login_Message = finalOutput.getMessage();
                        Login_status = finalOutput.getStatus();
                        if (Login_status) {
                            Log.d(TAG, "onResponse: status is Successful");
                            type = user.getType();
                            name = user.getFullname();
                            dob = user.getDob();
                            city = user.getCity();
                            email = user.getEmail();
                            id = String.valueOf(user.getId());
                            gender = user.getGender();
                            rating = user.getRating();
                            Log.d(TAG, "doInBackground: Login_Token: " + Login_Token);

                        } else {
                            Log.d(TAG, "onResponse: status is false");
                        }

                        Log.d(TAG, "doInBackground: VERIFY: " + Login_status);
                        Log.d(TAG, "doInBackground: Login_Message: " + Login_Message);
                        server_check = true;

                    }

                    @Override
                    public void onFailure(Call<UserOutputObj> call, Throwable t) {
                        Log.d(TAG, "onFailure: INSIDE: onFailure");
                        Log.d(TAG, "onFailure: INSIDE: onFailure");
                        Log.d(TAG, "onFailure: AN ERROR OCCURRED");
                        Log.d(TAG, "onFailure: Cause " + t.getCause());
                        Log.d(TAG, "onFailure: getMessage " + t.getMessage());
                        Toast.makeText(LoginActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
                    }
                });
 D/LOGIN: onFailure: INSIDE: onFailure
D/LOGIN: onFailure: INSIDE: onFailure
D/LOGIN: onFailure: AN ERROR OCCURRED
 D/LOGIN: onFailure: Cause java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
{
    "UserOutputObject": {
        "response": "0",
        "status": false,
        "response_text": "user does not exists",
        "message": "Number Not exist",
        "response_Code": 400
    }
}
{
    "response": {
        "status": true,
        "message": "Login Succesful",
        "token": "160444ef2fe0321-12P28071e2d6934764",
        "user": {
            "id": 3,
            "created_at": "2020-11-03T19:40:34.000000Z",
            "updated_at": "2020-11-03T19:40:34.000000Z",
            "fullname": "Mr Guy 4",
            "email": "mekefefeghe@gmail.com",
            "email_verified_at": "2020-11-03T21:52:01.941539Z",
            "type": "Customer",
            "father_name": null,
            "gender": "male",
            "dob": "1983/01/26",
            "number": "19077834474589",
            "city": "Yaba",
            "state": "Lagos",
            "country": "Nigeria",
            "address": "No 500 Correct address street",
            "status": "",
            "rating": 0,
            "token_id": "",
            "reg_date": "2020-11-03 19:40:34"
        },
        "response_Code": 200
    }
}
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserOutputObj implements Serializable {

    @Getter
    @Setter
    private String response;

    @Getter
    @Setter
    private String response_text;

    @Getter
    @Setter
    private UserInfo user;

    @Getter
    @Setter
    private Boolean status;

    @Getter
    @Setter
    private int response_Code;

    @Getter
    @Setter
    private String message;

    @Getter
    @Setter
    private String msg;

    @Getter
    @Setter
    private String token;

    @Getter
    @Setter
    private int zero;

    @Override
    public String toString() {
        return "UserOutputObj{" +
                "response='" + response + '\'' +
                ", response_text='" + response_text + '\'' +
                ", user=" + user +
                ", status=" + status +
                ", response_Code=" + response_Code +
                ", message='" + message + '\'' +
                ", msg='" + msg + '\'' +
                ", token='" + token + '\'' +
                ", zero=" + zero +
                '}';
    }
}