Я уже некоторое время пытаюсь запросить данные из веб-интерфейса. Веб-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, я перепробовал все, что мог себе представить, и пока мне не повезло. Кто-нибудь может помочь мне получить доступ к этим данным?