Как отправить запрос HTTP для Java (и обработать ответ) - PullRequest
0 голосов
/ 29 октября 2019

У меня небольшая проблема с приложением в java

Я должен отправить некоторую информацию (ключ внутри) с моим приложением для Android в файл PHP (register.php). Затем сгенерируйте пароль с ключом в PHP-скрипте. И мое Java-приложение получает пароль.

Сначала я пытаюсь передать Java-ключ в мой PHP и получить его.

Но когда я это делаю, я получаю такой результат:

 <br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> 
Notice: Use of undefined constant FirstName - assumed 'FirstName' in C:\wamp64\www\Register.php on line <i>16</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr><tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>367320</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\Register.php' bgcolor='#eeeeec'>...\Register.php<b>:</b>0</td></tr></table></font><br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Use of undefined constant LastName - assumed 'LastName' in C:\wamp64\www\Register.php on line <i>17</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr><tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr><tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>367320</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\Register.php' bgcolor='#eeeeec'>...\Register.php<b>:</b>0</td></tr></table></font><br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Use of undefined constant Reason - assumed 'Reason' in C:\wamp64\www\Register.php on line <i>18</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr><tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr><tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>367320</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\Register.php' bgcolor='#eeeeec'>...\Register.php<b>:</b>0</td></tr></table></font><br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Use of undefined constant Key - assumed 'Key' in C:\wamp64\www\Register.php on line <i>19</i></th></tr><tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr><tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr><tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>367320</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\Register.php' bgcolor='#eeeeec'>...\Register.php<b>:</b>0</td></tr></table></font><br /><font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0

Моя программа принимает все эхо страницы PHP, и я знаю, в чем проблема. Читателю удалось прочитать всю строку эха, но он прочитал это введите описание изображения здесь

Между временем, когда я отправляю информацию в мой PHP, и временем, когда я получаю информацию из моегоPHP, информация теряется. Может быть, потому что страница заряжается, когда я иду в get.

Вот мой код Java


Context context;
        BackgroundTask(Context ctx)
        {
            this.context = ctx;
        }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

protected String Password;

public String getpassword()
{
    return Password;
}


@Override
protected String doInBackground(String... params) {
        String RegistrationUrl = "http://myip:port/register.php";
    String method = params[0];
    String FirstName = params[1];
    String LastName = params[2];
    String Reason = params[3];
    String Key = params[4];






    try {
        URL url = new URL(RegistrationUrl);
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setRequestMethod("POST");
        httpURLConnection.setDoOutput(true);
        OutputStream Os = httpURLConnection.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(Os, "UTF-8"));
        String Data = URLEncoder.encode("FirstName", "UTF-8") + "=" + URLEncoder.encode(FirstName, "UTF-8") + "&"
                + URLEncoder.encode("LastName", "UTF-8") + "=" + URLEncoder.encode(LastName, "UTF-8") + "&"
                + URLEncoder.encode("Reason", "UTF-8") + "=" + URLEncoder.encode(Reason, "UTF-8") + "&"
                + URLEncoder.encode("Key", "UTF-8") + "=" + URLEncoder.encode(Key, "UTF-8");

        bufferedWriter.write(Data);
        InputStream IS = httpURLConnection.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));

        String line;
        String result ="";
        while ((line = bufferedReader.readLine()) != null)
        {
            result = result + line;
        }
       Password = result;
        bufferedWriter.flush();
        bufferedWriter.close();
        Os.close();
     bufferedReader.close();
      IS.close();
      httpURLConnection.disconnect();

    } catch (MalformedURLException e) {
        e.printStackTrace();

    } catch (ProtocolException e) {
        e.printStackTrace();

    } catch (IOException e) {
        e.printStackTrace();

    }

return Password;
}

@Override
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
}


@Override
protected void onPostExecute(String result) {
    Toast.makeText(context, result, Toast.LENGTH_LONG).show();
}
}

И мойPHP-код


    <?php require "connection.php";

$FirstName = $_POST[FirstName];
 $LastName = $_POST[LastName];
 $Reason = $_POST[Reason];
 $Key = $_POST[Key];

$mysql_qry = "INSERT INTO requesttable(FirstName, LastName, Reason) VALUES ('$FirstName', '$LastName', '$reason')";


if($conn->query($mysql_qry) === TRUE)
{
    echo $Key;
}
else
{
    echo "error: ".$mysql_qry ."<br>". $conn->error; 
}
?>

Я искал в сети, но ничего об этом не нахожу. У меня есть некоторые трудности с Java и PHP

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 29 октября 2019

Я бы поместил эти $ _POST ['variableNames'] в одинарные / двойные кавычки, так как вы используете константы FirstName, LastName и т. Д., Которые вы не определили заранее, поэтому ваши значения $ _POST теряются, поскольку онине присваивается переменным php.

$FirstName = "";
if(isset($_POST['FirstName']){
$FirstName = $_POST['FirstName'];
} else {
 //some errror
}

В противном случае, чтобы использовать константы, которые, как мне кажется, не нужны, сначала определите эти константы:

define("FirstName", "FirstName");
$FirstName = $_POST[FirstName];

Для предотвращения ошибок / предупреждений от ответа php используйте error_reporting (0) вверху страницы php (например, если php выдает выходные данные для ограниченных функций и т. Д.)

...