Android Retrofit simple usage error

自闭症网瘾萝莉.ら 提交于 2019-12-24 16:27:50

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!