Smart.php
define('HOST','localhost');
define('USER','root');
define('PASS','root ');
define('DB','Stud');
$con = mysqli_connect(HOST,USER,PASS,DB);
$sql = "выбрать * из Student";
$result=array();
$res = mysqli_query($con,$sql);
введите сюда код
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);
?>
Программа для Android приведена ниже:
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 call = as.List();
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response 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 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());
}
}
}
Код: Выделить всё
public class Example {
@SerializedName("result")
@Expose
private List result = null;
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
}
Код: Выделить всё
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;
}
}
Код: Выделить всё
public interface ApiServices {
@GET("Smart.php")
Call List();
}
activity_main.xml
E/API не удалось: Retrofit2.Response@d45de1e не найден
okhttp3.ResponseBody$1@9a0e6ff 404
Это означает, что ответное сообщение «Не найдено» и код ответа «404».
После редактирования программы, как предложено, и удаление "/" приводит к следующей ошибке в logcat:
E/Failed: t.printStackTrace()java.lang.UnsupportedOperationException: Interface не может быть создан экземпляр! Имя интерфейса: javax.xml.transform.ResultНевозможно вызвать конструктор без аргументов для интерфейса javax.xml.transform.Result. Регистрация InstanceCreator в Gson для этого типа может решить эту проблему.
Подробнее здесь: https://stackoverflow.com/questions/457 ... -in-retrof
Мобильная версия