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.
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
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 –