我正在进行改造,但是有问题。我想从服务器获取结果。

这是我的脚本php中的结果json:

[{"rubrique_id":"1","rubrique_lib":"syst\u00e8me "},
 {"rubrique_id":"2","rubrique_lib":"s\u00e9curit\u00e9"},
 {"rubrique_id":"3","rubrique_lib":"information"}]


这是我在Java中的模型类:

public class Bureau {

    @SerializedName("rubrique_id")
    private String rubrique_id;

    @SerializedName("rubrique_lib")
    private String rubrique_lib;

    public String getRubrique_id() {
        return rubrique_id;
    }

    public void setRubrique_id(String rubrique_id) {
        this.rubrique_id = rubrique_id;
    }

    public String getRubrique_lib() {
        return rubrique_lib;
    }

    public void setRubrique_lib(String rubrique_lib) {
        this.rubrique_lib = rubrique_lib;
    }


}


这是我的API类:

public interface BureauApi {

    @GET("/")
    Call<List<Bureau>> getBureau();
}


这是我实现改造库的主类:

public class ParametreActivity extends AppCompatActivity {
    private Spinner spinner = null;
    private static final String BASE_URL = "http://192.168.56.1:80/posteboosterAPI/methodes.php/";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_parametre);
        spinner = (Spinner)findViewById(R.id.list_bureau);
        final List<String> listBureau = new ArrayList<String>();
        listBureau.add("bureau1");
        listBureau.add("bureau2");

        Gson gson = new GsonBuilder()
                .setLenient()
                .create();

        Retrofit retrofit = new Retrofit.Builder()
                             .baseUrl(BASE_URL)
                             .addConverterFactory(GsonConverterFactory.create(gson))
                             .build();
        BureauApi  service = retrofit.create(BureauApi.class);

        Call<List<Bureau>> call = service.getBureau();
         call.enqueue(new Callback<List<Bureau>>() {
             @Override
             public void onResponse(Call<List<Bureau>> call, Response<List<Bureau>> response) {

                 if (response.isSuccessful()) {

                     for (Bureau bureaus :response.body()
                             ) {
                         Log.i("log", bureaus.getRubrique_lib());
                     }
                 }else {

                     Log.i("log", "l'objet est vide "+response.message());
                 }
             }

             @Override
             public void onFailure(Call<List<Bureau>> call, Throwable t) {
                 Log.i("log","erreur survenu dans la requete "+ t.getMessage());

             }
         });
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,listBureau);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
    }
}


并且控制台给我以下错误:


预期为BEGIN_ARRAY,但位于第1行第1列路径$ STRING

最佳答案

尝试这个:

public class BureauCollection
{
   List<Bureau> bureauList;
}




Call<BureauCollection> getBureau();


更改基本URL:“ http://192.168.56.1:80/
并在API中:@GET(“ / posteboosterAPI / methodes.php”)

关于java - 预期为BEGIN_ARRAY,但在第1行第1列的路径为STRING $ android retrofit gson,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40224966/

10-10 15:40