Ваш ответ json является массивом, и вы определяете String для получения этого способа отображения ошибки.
И ваш json имеет ошибку, вставьте ваши данные json в эту ссылку показать ошибку .. http://www.jsonschema2pojo.org/
Попробуйте использовать Retrofit для работы с интеграцией API.
добавьте приведенную ниже зависимость в файл уровня приложения.
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'
после make pojo класса для вашего ответа API.
public class ResponseUserData{
@SerializedName("datedi")
private String datedi;
@SerializedName("numero")
private String numero;
@SerializedName("equipement")
private String equipement;
@SerializedName("compteurdi")
private String compteurdi;
@SerializedName("demandeur")
private String demandeur;
@SerializedName("message")
private String message;
@SerializedName("etat")
private String etat;
public void setDatedi(String datedi){
this.datedi = datedi;
}
public String getDatedi(){
return datedi;
}
public void setNumero(String numero){
this.numero = numero;
}
public String getNumero(){
return numero;
}
public void setEquipement(String equipement){
this.equipement = equipement;
}
public String getEquipement(){
return equipement;
}
public void setCompteurdi(String compteurdi){
this.compteurdi = compteurdi;
}
public String getCompteurdi(){
return compteurdi;
}
public void setDemandeur(String demandeur){
this.demandeur = demandeur;
}
public String getDemandeur(){
return demandeur;
}
public void setMessage(String message){
this.message = message;
}
public String getMessage(){
return message;
}
public void setEtat(String etat){
this.etat = etat;
}
public String getEtat(){
return etat;
}
@Override
public String toString(){
return
"ResponseUserData{" +
"datedi = '" + datedi + '\'' +
",numero = '" + numero + '\'' +
",equipement = '" + equipement + '\'' +
",compteurdi = '" + compteurdi + '\'' +
",demandeur = '" + demandeur + '\'' +
",message = '" + message + '\'' +
",etat = '" + etat + '\'' +
"}";
}
}
Создание объекта дооснащения ..
class ApiClient {
companion object {
val BASE_URL = "https://simplifiedcoding.net/demos/"
var retrofit: Retrofit? = null
fun getClient(): Retrofit? {
if (retrofit == null) {
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
val client = OkHttpClient.Builder().apply {
readTimeout(20, TimeUnit.SECONDS)
writeTimeout(20, TimeUnit.SECONDS)
connectTimeout(20, TimeUnit.SECONDS)
addInterceptor(interceptor)
addInterceptor { chain ->
var request = chain.request()
request = request.newBuilder()
.build()
val response = chain.proceed(request)
response
}
}
retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client.build())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
return retrofit
}
}
}
после создания интерфейса для вызова API.
interface ApiInterface {
@GET(NetworkConstant.DATA)
fun getData(): Call<List<Hero>> // define your response class
}
вызов API в фрагмент или действие..
private fun getHeroData() {
val dialog= ProgressDialog(mContext)
showProgress(dialog)
var apiInterface: ApiInterface = ApiClient.getClient()!!.create(ApiInterface::class.java)
var hero: Call<List<Hero>>
hero = apiInterface.getData()
hero.enqueue(object : Callback<List<Hero>> {
override fun onFailure(call: Call<List<Hero>>?, t: Throwable?) {
closeDialog(dialog)
Toast.makeText(mContext, t?.message, Toast.LENGTH_SHORT).show()
Log.d("Error:::",t?.message)
}
override fun onResponse(call: Call<List<Hero>>?, response: Response<List<Hero>>?) {
mHeroDataList.clear()
if (response != null && response.isSuccessful && response.body() != null) {
closeDialog(dialog)
mHeroDataList .addAll(response.body()!!)
setAdapter(mHeroDataList)
}
}
})
}