Отправка POST-запроса на сервер

177
27 октября 2017, 11:19

Задача - отправить на сервер запрос (либо параметры для запроса на сервере) и получить выборку. Однако с отправкой возникли проблемы.

В RegConnection передаю через execute два параметра: param[0] это текст из EditText (условие запроса) и param[1] это номер выбранного элемента спиннера. Однако при передаче данных через urlConnection.setRequestProperty (вообще не понимаю нужен ли в этой ситуации буфер выходных данных и как без него, однако для получения значения обратно нужен входной) запрос происходит через раз, и то, даже если он приходит (и создается тхт-лог), то POST-параметры пустые.

class RegConnection extends AsyncTask<String,Void,Void> {
HttpURLConnection urlConnection = null;
@Override
protected Void doInBackground(String... params) {
    try {
        URL url = new URL("https://r-rp.su/php/android.php");
        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.setRequestProperty("spinneritem", params[1]);
        urlConnection.setRequestProperty("value", params[0]);
        urlConnection.setDoOutput(true);
        OutputStream os = urlConnection.getOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
        writer.write("Hello");
        writer.flush();
        writer.close();
        os.close();
        urlConnection.connect();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return null;
} }

PHP

     <?php
$spinneritem = intval($_POST['spinneritem']);
$value = $_POST['value'];
$query = "";
file_put_contents('android.txt', $spinneritem." - item ".$value." - value\n", LOCK_EX | FILE_APPEND);
switch($spinneritem)
{
    case 0:
        $query = "SELECT FLIGHTS.NUM, FLIGHTS.START_TIME, FLIGHTS.AIRPORT_TARGET FROM FLIGHTS
                            INNER JOIN startings ON startings.flight_num=flights.num
                            INNER JOIN PLANES ON startings.plane_code=PLANES.PLANE_CODE +
                            WHERE PLANES.TYPE=?;";
        break;
}
try {
    $dbh = new PDO('*данные*);
    $stmt = $dbh->prepare($query);
    $stmt->execute($value);
    $res = $stmt->fetchAll(PDO::FETCH_BOTH);
    $ret = json_encode($res);
    file_put_contents('android.txt', $ret." - returned value \n", LOCK_EX | FILE_APPEND);
    echo $res;

    $dbh = null;
} catch (PDOException $e) {
    echo "Error!: " . $e->getMessage() . "<br/>";
    file_put_contents('android.txt', $e->getMessage()." - exception \n", LOCK_EX | FILE_APPEND);
    die();
}
?>
    введите сюда код
READ ALSO
Как найти разницу во времени? [дубликат]

Как найти разницу во времени? [дубликат]

На данный вопрос уже ответили:

164
Recompile with the -verbose option for more details about the issue

Recompile with the -verbose option for more details about the issue

При компиляции проекта перед деплоем на weblogic ide jDeveloper выдает ошибку:

262
Как передать текст из Java кода в WebView?

Как передать текст из Java кода в WebView?

Есть WebView, он грузит страницу html (из папки assets в проекте) в которой есть форма с textarea

164
java помогите решить задачу с помощью switch

java помогите решить задачу с помощью switch

помогите пожалуйста решить данную задачу в java, не совсем понятно как её реализовать через switchЗадача: В восточном календаре принят 60-летний...

235