Ответное сообщение «Не найдено» и код ответа 404 при вызове API при модернизацииAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ответное сообщение «Не найдено» и код ответа 404 при вызове API при модернизации

Сообщение Anonymous »

Веб-сервис для получения данных из базы данных приведен ниже:

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());
}
}
}
Example.java

Код: Выделить всё

public class Example {

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

public List getResult() {
return result;
}

public void setResult(List 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 Интерфейс

Код: Выделить всё

public interface ApiServices {

@GET("Smart.php")
Call  List();

}

activity_main.xml






Когда я запускаю эту программу и нажимаю кнопку, я получаю нулевое всплывающее сообщение, а вывод logcat выглядит следующим образом:


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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»