Мы пытаемся отправить запрос DELETE со страницы приложения в наш API, но, похоже, ничего не работает.Запрос выглядит нормально, трижды проверил, что отправляемая им хеш-карта содержит соответствующие данные.Даже код запроса возвращает «500».Однако в нашем API он получает ответ в порядке и запрашивает номер для выполнения функции удаления.Значение всегда возвращается null.
Работает нормально, если вы отправляете запрос на Postman, а не на приложение.
Мы попытались изменить хэш-карту нацелое число и строка, тройная проверка URL-адреса, установка точек останова в API без особого везения при обнаружении проблемы, разбивка запроса и ответа в API, чтобы увидеть, возвращает ли он что-либо.
API:
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException
{
System.out.println("Request: " + req + " Response: " + resp);
writer= resp.getWriter();
resp.setContentType("text/html;charset=UTF-8");
System.out.println(req);
Integer ID = Integer.parseInt(req.getParameter("vehicle_id"));
System.out.println("ID: " + ID);
boolean delete = false;
delete = dao.deleteVehicle(ID);
if(delete)
{
writer.write("Vehicle Deleted! Vehicle_ID: " + ID);
}
else
{
writer.write("Error");
}
writer.close();
}
}
Приложение (запрос):
try {
String response = "";
URL url = new URL("http://10.0.2.2:8005/vehicles/api");
// create the connection object
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(15000);
connection.setConnectTimeout(15000);
connection.setRequestMethod("DELETE");
//write/send/POST data to the connection using output stream and buffered
OutputStream OS = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8"));
// write/send/POST key/value data (url encoded) to the server
final HashMap<String, String> hash = new HashMap<>();
String id = String.valueOf(v.getVehicle_id());
hash.put("vehicle_id", id);
hash.put("make", v.getMake().toString());
//!!!
writer.write(getDeleteDataString(hash));
//!!!
System.out.println("HELP: " + getDeleteDataString(hash));
// clear the writer
writer.flush();
writer.close();
// close output stream
OS.close();
int responseCode = connection.getResponseCode();
System.out.println("responseCode = " + responseCode);
if (responseCode == HttpsURLConnection.HTTP_OK) {
//Toast.makeText(this, "Vehicle Saved Successfully!", Toast.LENGTH_LONG).show();
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = br.readLine()) != null) {
response += line;
}
} else {
Toast.makeText(vehicleDetails.this, "Failed To Delete Vehicle", Toast.LENGTH_LONG).show();
response = "";
}
Intent intent1 = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent1);
} catch (Exception e) {
e.printStackTrace();
}
В результате следует удалить файл с соответствующим идентификатором, хотяКажется, что объект не прошел.
Большое спасибо!