0

Webservice pour extraire des données de base de données est donné ci-dessous:Message de réponse-Introuvable et la réponse de code 404, tout en appelant l'api dans la modernisation

Smart.php

 

     define('HOST','localhost'); 
     define('USER','root'); 
     define('PASS','root'); 
     define('DB','Stud'); 

     $con = mysqli_connect(HOST,USER,PASS,DB); 

     $sql = "select * from Student"; 

     $result=array(); 

     $res = mysqli_query($con,$sql); 

     enter code here 

     while($row = mysqli_fetch_array($res)){ 
     array_push($result, 
     array('id'=>$row[0], 
     'name'=>$row[1], 
     'address'=>$row[2] 
    )); 
    } 
    echo json_encode(array("result"=>$result)); 

    mysqli_close($con); 


?> 

programme Android est aussi ci-dessous:

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    public static final String BASE_URL = "http://localhost:80/Projecr/"; 

    ApiServices as; 

    TextView tv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv=(TextView)findViewById(R.id.text); 
     Button btn=(Button)findViewById(R.id.btn); 

     Retrofit retrofit = new Retrofit.Builder() 

       .baseUrl(BASE_URL) 

       .addConverterFactory(GsonConverterFactory.create()) 

       .build(); 
     as=retrofit.create(ApiServices.class); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       load(); 
      } 
     }); 

    } 
    private void load() { 
     try { 
      Call<Example> call = as.List(); 

      call.enqueue(new Callback<Example>() { 
       @Override 
       public void onResponse(Call<Example> call, Response<Example> response) { 
        //  int statusCode = response.code(); 
        if(!response.isSuccessful()) 
        { 
         Log.e("API not success",response.toString()+response.message()+response.errorBody()+response.code()); 
        } 
        Example e = response.body(); 
        if (e == null) { 
         Toast.makeText(getApplicationContext(), "Null", Toast.LENGTH_LONG).show(); 
        } else { 
         Toast.makeText(MainActivity.this, "Not Null", Toast.LENGTH_LONG).show(); 
        } 
       } 

       @Override 
       public void onFailure(Call<Example> call, Throwable t) { 
        Log.e("Failed","t.printStackTrace()"+t.getCause()+t.getMessage()); 
        tv.setText("Failure"); 
       } 
      }); 
     } 
     catch (Exception e) 
     { 
      String TAG="tag"; 
      Log.e(TAG, e.getMessage()); 
     } 
    } 
} 

Example.java

public class Example { 

    @SerializedName("result") 
    @Expose 
    private List<Result> result = null; 

    public List<Result> getResult() { 
     return result; 
    } 

    public void setResult(List<Result> result) { 
     this.result = result; 
    } 

} 

Result.java

public class Result { 

    @SerializedName("id") 
    @Expose 
    private String id; 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("address") 
    @Expose 
    private String address; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

} 

ApiServices.java Interface

public interface ApiServices { 

    @GET("Smart.php") 
    Call<Example> List(); 

} 

activity_main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.example.saloni.retrofit_sample.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="15dp" 
     android:id="@+id/text" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/btn" 
    android:text="click" 
    /> 
</LinearLayout> 

Quand je lance ce programme, sur clickin bouton g, je reçois le nul pain grillé et la sortie logcat est la suivante:

E/API non succès: [email protected] non trouvé [email protected] 404

qui signifie que le message de réponse est "Non trouvé" et que le code de réponse est "404".

Après avoir modifié le programme proposé et la suppression "/", il donne l'erreur suivante dans logcat:

E/Échec: t.printStackTrace() java.lang.UnsupportedOperationException: Interface ne peut pas être instancié ! Nom de l'interface: javax.xml.transform.ResultUnable pour appeler le constructeur no-args pour l'interface javax.xml.transform.Result. Enregistrer un InstanceCreator avec Gson pour ce type peut résoudre ce problème.

Répondre

1
public interface ApiServices { 

@GET("/Smart.php") 
Call<List<Result>> List(); 

} 

au lieu de

public interface ApiServices { 

@GET("Smart.php") 
Call<List<Result>> List(); 

} 
+0

Après avoir appliqué votre suggestion et édité le code, il donne une autre erreur comme édité dans le post.Plz me guide plus loin – seilena

+0

Ce n'est pas la question de code vérifiez votre réponse de json je pense que vous obtenez Liste pas objet d'exemple –

0

Je résolu cette erreur avec succès sans autres erreurs. Ma classe Result.java est en conflit avec la classe javax.xml.transform.Result. donc j'ai renommé mon Result.java class