Отправка HTTP POST multipart / form-data с Android-клиента на HTTP-сервер - PullRequest
0 голосов
/ 15 ноября 2018

Я пишу приложение, которое позволит пользователю делать снимки, которые автоматически отправляются на HTTP-сервер для классификации через HTTP POST multipart / form-data.Для создания и отправки этих запросов я использую библиотеку Apache HTTPClient.Я несколько уверен в том, что мой клиентский код на Java работает, так как я протестировал одну из конечных точек API Imgur и правильно загрузил изображения;поэтому, я думаю, что наиболее вероятно, что есть ошибка в конечной точке на моем сервере.Я отправляю запрос на сервер для получения сценария PHP, который я написал для получения файла, сохранения его в каталоге на сервере и отправки ответа клиенту соответствующим образом.Когда я проверяю это, сервер всегда отправляет ответ с кодом состояния 200, даже если скрипт явно не работает.Я попытался вручную установить код состояния ответа 500, чтобы принудительно вызвать код ошибки, и даже это не работает, что заставляет меня думать, что весь сценарий даже не запускается, когда запрос достигает конечной точки (если он даже достигает конечной точки)).Я ожидаю, что это будет либо ошибка в конфигурации сервера, либо ошибка в самом скрипте.Тем не менее, я вставил код Java на всякий случай.Там вы также можете найти некоторые ошибки.Я не очень хорошо разбираюсь в сетях или в PHP, поэтому могу определенно использовать более опытные глаза.

  • Примечание: я знаю, что мой PHP-код выглядит ужасно.Вы, вероятно, найдете много плохих практик;извините.

Код моего сервера:

<?php

$path = '/home/user01/Documents/uploaded_images/';
$ext = '.jpg';

function getFileName() {
  return 'image_'.date('Y-m-d_His');
}

//Receive the data from android client

$file = $_FILES['uploadedFile'];


//process the data

$filename = $path . getFileName() . '_' . $_SERVER['REMOTE_ADDR'] . $ext;

if (!is_uploaded_file($file['tmp_name']) ||
    !copy($file['tmp_name'], $filename))
{
  $message = 'Could not save file as' . $filename;
  $error = True;
}
else {
  $message = "Image uploaded successfully!";
  $error = False;
}

//return response to the server

if ($error) {
  http_response_code(500);
}

echo json_encode(
  array(
    'status' => 'Repsonse Code :' . http_response_code(),
    'message' => $message
  ), JSON_FORCE_OBJECT);


?>

1 Ответ

0 голосов
/ 17 ноября 2018

Обновление и разрешение:

После некоторого устранения неполадок с помощью нескольких пост-комментаторов я сначала попытался написать простую HTML-форму для локальной отправки POST-запросов в сценарий PHP, а после сбоя этих запросов я добавил функцию die() в начало кода, и все же ничего не произошло. Это позволило мне выяснить, что ошибка.

Проблемы, которые у меня были, были вызваны неправильной конфигурацией сервера. Это приводило к тому, что PHP не распознавался как установленный язык; поэтому сценарий не выполнялся вообще. Как только конфигурация была исправлена, скрипт работал точно так, как ожидалось.

Большое спасибо комментаторам за их понимание.

...