问题
Reused some come from tutorial to get Retrofit working. These are the key classes. MainActivity package com.example.jc.retrofittest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import com.example.jc.retrofittest.POJO.Model;
import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;
public class MainActivity extends AppCompatActivity {
TextView city, status, humidity, pressure;
String url = "http://www.seecroatia.com/croatiamaps";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
city = (TextView) findViewById(R.id.txt_city);
status = (TextView) findViewById(R.id.txt_status);
humidity = (TextView) findViewById(R.id.txt_humidity);
pressure = (TextView) findViewById(R.id.txt_press);
//making object of RestAdapter
RestAdapter adapter = new RestAdapter.Builder().setEndpoint(url).build();
city.setText(adapter.toString());
//Creating Rest Services
RestInterface restInterface = adapter.create(RestInterface.class);
//Calling method to get whether report
restInterface.getWheatherReport(new Callback<Model>() {
@Override
public void success(Model model, Response response) {
city.setText("jur1e");
// status.setText("Status :"+model.getTyopInfo());
}
@Override
public void failure(RetrofitError error) {
city.setText("greska");
String merror = error.getMessage();
}
});
}
}
Model.java
public class Model {
public Model() {
}
public Model(int idInfo, int typeInfo) {
this.idInfo = idInfo;
this.typeInfo = typeInfo;
}
public int getIdInfo() {
return idInfo;
}
public void setIdInfo(int idInfo) {
this.idInfo = idInfo;
}
public int getTypeInfo() {
return typeInfo;
}
public void setTypeInfo(int typeInfo) {
this.typeInfo = typeInfo;
}
private int idInfo;
private int typeInfo;
}
RestInterface
public interface RestInterface {
@GET("/getMarker.php")
void getWheatherReport(Callback<Model> cb);
}
Hotel
public class Hotel {
private String idHotel;
private String pbr;
private String mjesto;
private String naziv;
private String adresa;
private String web;
private String email;
private String latitude;
private String longitude;
public Hotel() {
}
public Hotel(String idHotel, String pbr, String mjesto, String naziv, String adresa, String web, String email, String latitude, String longitude) {
this.idHotel = idHotel;
this.pbr = pbr;
this.mjesto = mjesto;
this.naziv = naziv;
this.adresa = adresa;
this.web = web;
this.email = email;
this.latitude = latitude;
this.longitude = longitude;
}
public String getIdHotel() {
return idHotel;
}
public void setIdHotel(String idHotel) {
this.idHotel = idHotel;
}
public String getPbr() {
return pbr;
}
public void setPbr(String pbr) {
this.pbr = pbr;
}
public String getMjesto() {
return mjesto;
}
public void setMjesto(String mjesto) {
this.mjesto = mjesto;
}
public String getNaziv() {
return naziv;
}
public void setNaziv(String naziv) {
this.naziv = naziv;
}
public String getAdresa() {
return adresa;
}
public void setAdresa(String adresa) {
this.adresa = adresa;
}
public String getWeb() {
return web;
}
public void setWeb(String web) {
this.web = web;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
}
My code allways goes to failure part in Mainactivity. Suggestions please?
回答1:
Now getting java.Lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY. Clearly I'm trying to get different JSON format that it resides on server. My Model class contains two ints that I'm collecting from web service, but something is wrong with the way I'm recieving it.
The endpoint is returning a JSONArray, not a JSONObject. your
Callback<Model> should be Callback<List<Model>>
You have to change also your Model class. idInfo and typeInfo are returned as String not as int
来源:https://stackoverflow.com/questions/33165610/android-retrofit-simple-usage-error