Модификация 2, запрос данных от API - PullRequest
0 голосов
/ 11 марта 2019

Я уже некоторое время пытаюсь запросить данные из веб-интерфейса. Веб-API выглядит следующим образом:

[ {
"data": [
{
"LastSeen": "10"
} ],
"Hit": false,
"message": "There you go",
"status": 200
} ]

И я пытаюсь запросить данные у LastSeen, поэтому целое число 10 в этом случае. Интерфейс, который я использую, выглядит следующим образом:

package quint.hotmail.com.clwo;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;

public interface JsonPlaceHolderApi {

    @GET("b/5c84fab65fe21458779c8131/2")
    Call<List<Comment>> getComments();
}

У меня также есть класс комментариев и базовый класс, эти классы были созданы с использованием http://www.jsonschema2pojo.org/ и выглядят следующим образом (класс комментариев):

public class Comment {

        @SerializedName("data")
        @Expose
    private List<Datum> data = null;
    @SerializedName("Hit")
    @Expose
    private Boolean hit;
    @SerializedName("message")
    @Expose
    private String message;
    @SerializedName("status")
    @Expose
    private Integer status;

    public List<Datum> getData() {
        return data;
    }

    public void setData(List<Datum> data) {
        this.data = data;
    }

    public Comment withData(List<Datum> data) {
        this.data = data;
        return this;
    }

    public Boolean getHit() {
        return hit;
    }

    public void setHit(Boolean hit) {
        this.hit = hit;
    }

    public Comment withHit(Boolean hit) {
        this.hit = hit;
        return this;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Comment withMessage(String message) {
        this.message = message;
        return this;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Comment withStatus(Integer status) {
        this.status = status;
        return this;
    }

}

И базовый класс:

public class Datum {

@SerializedName("LastSeen")
@Expose
private String lastSeen;

public String getLastSeen() {
    return lastSeen;
}

public void setLastSeen(String lastSeen) {
    this.lastSeen = lastSeen;
}

public Datum withLastSeen(String lastSeen) {
    this.lastSeen = lastSeen;
    return this;
}

}

И, наконец, у меня есть класс mainacctivity:

public class MainActivity extends AppCompatActivity {
private TextView textViewResult;
private TextView textViewResult2;

private JsonPlaceHolderApi jsonPlaceHolderApi;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textViewResult = findViewById(R.id.textview);
    textViewResult2 = findViewById(R.id.textView2);


    Gson gson = new GsonBuilder()
            .setLenient()
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
            .create();



    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://api.jsonbin.io/")
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();


    jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);

    getComments();
}

private void getComments() {



    Call<List<Comment>> call = jsonPlaceHolderApi
            .getComments();

    call.enqueue(new Callback<List<Comment>>() {
        @Override
        public void onResponse(Call<List<Comment>> call, Response<List<Comment>> response) {

            if (!response.isSuccessful()) {
                textViewResult.setText("Code: " + response.code());
                return;
            }
            List<Comment> comments = response.body();

            for (Comment comment : comments) {
                if(comment.getStatus() == 200){
                    ImageView firstimage = (ImageView) findViewById(R.id.imageView);
                    firstimage.setImageResource(R.drawable.fail);
                    textViewResult.append("Online");
                }
                else if(!(comment.getStatus() ==  200)){
                    String content = "";
                    content += ("Error code: ") + comment.getStatus();
                    textViewResult.append(content);
                    ImageView firstimage = (ImageView) findViewById(R.id.imageView);
                    firstimage.setImageResource(R.drawable.fail);

                }
            }
        }
        @Override
        public void onFailure(Call<List<Comment>> call, Throwable t) {
            textViewResult.setText(t.getMessage());
        }
    });
    }
   }

Теперь мне не удалось получить доступ к данным «LastSeen» из API, я перепробовал все, что мог себе представить, и пока мне не повезло. Кто-нибудь может помочь мне получить доступ к этим данным?

1 Ответ

0 голосов
/ 11 марта 2019
for (Comment comment : comments) {
    if (comment.getData() != null && !comment.getData().isEmpty) {
       String lastSeen = comment.getData().get(0).getLastSeen()
       //'last seen' is your field
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...