我正在进行改造,但是有问题。我想从服务器获取结果。
这是我的脚本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/