我正在使用改造进行开发,但我遇到了问题。我想从我的服务器获取结果。
这是我的 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);
}
}
控制台给我以下错误:
Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $
最佳答案
试试这个:
public class BureauCollection
{
List<Bureau> bureauList;
}
和
Call<BureauCollection> getBureau();
更改基本 URL:“http://192.168.56.1:80/” 在 API 中:@GET("/posteboosterAPI/methods.php")
关于java - 预期为 BEGIN_ARRAY,但在第 1 行第 1 列路径 $ android Retrofit gson 处为 STRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40224966/