Java 使用2的服务器没有响应

Java 使用2的服务器没有响应,java,android,retrofit2,Java,Android,Retrofit2,您好,在下面的代码中,我有一个get方法,它来自get方法,使用改型库解析json响应 对于下面的挑战类,通过pojo类解析json响应,但响应不是来自服务器 有谁能帮忙解决这个问题吗 答复: { success: true, result: { token: TOKENSTRING, // Challenge token to be used for login. serverTime: TI

您好,在下面的代码中,我有一个get方法,它来自get方法,使用改型库解析json响应

对于下面的挑战类,通过pojo类解析json响应,但响应不是来自服务器

有谁能帮忙解决这个问题吗 答复:

{
        success: true,
        result: {
                token: TOKENSTRING,    // Challenge token to be used for login.
                serverTime: TIMESTAMP, // Current Server time
                expireTime: TIMESTAMP  // Time when token expires
        }
}
GetChallenge.java:

private void getchallenge() {


        //Here a logging interceptor is created
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);

        //The logging interceptor will be added to the http client
        OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
        httpClient.addInterceptor(logging);

        final GetNoticeDataService service = RetrofitInstance.getRetrofitInstance().create(GetNoticeDataService.class);

        /** Call the method with parameter in the interface to get the notice data*/
        Call<ManageChallenge> call = service.getChallengeList();

        /**Log the URL called*/
        Log.wtf("URL Called", call.request().url() + "");

        call.enqueue(new Callback<ManageChallenge>() {
            @Override
            public void onResponse(Call<ManageChallenge> call, Response<ManageChallenge> response) {
                if(response.isSuccessful() ) {

                    ManageChallenge challenge=response.body();

                   // String response1=response.body().toString();
                    String success=challenge.getSuccess().toString();

                    if(success.equals("true")){
                        String result= challenge.getResult().toString();

                        try {
                            JSONObject jsonObject =new JSONObject(result);

                            String token = jsonObject.getString("token");
                            Log.i("token", "token" + token);
                            String serverTime =jsonObject.getString("serverTime");
                            Log.i("serverTime", "serverTime" + serverTime);
                            String expireTime =jsonObject.getString("expireTime");
                            Log.i("expireTime", "expireTime" + expireTime);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    Log.i("REsult", "Get submitted to API." + challenge);

                }
            }

            @Override
            public void onFailure(Call<ManageChallenge> call, Throwable t) {
                Toast.makeText(LoginActivity.this, "Something went wrong...Error message: " + t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
}
public class ManageChallenge {

    @SerializedName("success")
    private String success;

    @SerializedName("result")
    private List <getChallengeList> result;

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    public List<getChallengeList> getResult() {
        return result;
    }

    public void setResult(List<getChallengeList> result) {
        this.result = result;
    }
}
GetNoticeDataService.java:

 public interface GetNoticeDataService {

        @Headers("Content-Type: application/json")
        @GET("webservice.php?operation=getchallenge&username=admin")
        Call<ManageChallenge> getChallengeList();
    }
邮递员回应:

{"success":true,"result":{"token":"5e2ab99eb318f","serverTime":1579858334,"expireTime":1579858634}}
在postman响应中,“result”返回一个json对象,但在ManageChallenge.java中。将结果声明为对象列表。所以我认为它可能会导致一些错误时,铸造

另外,你应该在第一个字符处用大写字母声明你的类名。如果没有,它可能会在将来引起一些混乱


PS2。对不起,我的英语水平太差了。

根据您的回复,这里没有关于问题的列表

@SerializedName("result")
private List<GetChallengeList> result;
GetChallengeList类

public class GetChallengeList {

    @SerializedName("token")
    @Expose
    private String token;
    @SerializedName("serverTime")
    @Expose
    private String serverTime;
    @SerializedName("expireTime")
    @Expose
    private String expireTime;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getServerTime() {
        return serverTime;
    }

    public void setServerTime(String serverTime) {
        this.serverTime = serverTime;
    }

    public String getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(String expireTime) {
        this.expireTime = expireTime;
    }

    public GetChallengeList(String tokens, String expireTimes, String serverTimes){
        token = tokens;
        expireTime = expireTimes;
        serverTime = serverTimes;
    }
}

我不明白这一点,您使用的是改型,并使用json对象获取响应,您可以直接将模型调用传递到改型中,然后使用模型调用轻松获取数据。response.body().challenge().getResult().toString()

您是否与postman一起检查了api,它是否与postmanyes的预期一样工作它在postman和brower中工作,您是否可以发布postman响应here@Dulanga在下面的回答中添加了ppostman回答
@SerializedName("result")
private List<GetChallengeList> result;
public class ManageChallenge {

    @SerializedName("success")
    private String success;

    @SerializedName("result")
    private GetChallengeList result;

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    public GetChallengeList getResult() {
        return result;
    }

    public void setResult(GetChallengeList result) {
        this.result = result;
    }
}
public class GetChallengeList {

    @SerializedName("token")
    @Expose
    private String token;
    @SerializedName("serverTime")
    @Expose
    private String serverTime;
    @SerializedName("expireTime")
    @Expose
    private String expireTime;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getServerTime() {
        return serverTime;
    }

    public void setServerTime(String serverTime) {
        this.serverTime = serverTime;
    }

    public String getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(String expireTime) {
        this.expireTime = expireTime;
    }

    public GetChallengeList(String tokens, String expireTimes, String serverTimes){
        token = tokens;
        expireTime = expireTimes;
        serverTime = serverTimes;
    }
}