У меня есть node.js, который ждет публикации с двумя параметрами (имя и пароль):

app.post('/login.html', function (req, res) {

    log.info(req.body);
    userName = req.body.name;
    pass = req.body.pass;
    ...
}

Я пытаюсь отправить сообщение с двумя параметрами через простое Java-приложение, но не вижу, чтобы оно доставлялось на node.js.

Что мне не хватает?

Код Java:

public static void main(String[] args) {
    URL url;
    HttpURLConnection urlConnection = null;
    try {
        url = new URL("http://83.63.118.111:31011/login.html");

        urlConnection = (HttpURLConnection) url.openConnection();               
        urlConnection.setReadTimeout(10000);
        urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

        urlConnection.setConnectTimeout(10000);
        urlConnection.setRequestMethod("POST");
        urlConnection.setDoInput(true);
        urlConnection.setDoOutput(true);

        OutputStream os = urlConnection.getOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));          
        String str = "name='root'&pass='123456'";
        //System.out.print(str);
        writer.write(str);
        writer.flush();
        Thread.sleep(100);
        writer.close();
        os.close();       
}           
1
user3668129 22 Сен 2018 в 20:07

1 ответ

Лучший ответ

Ваш код закроется, когда начнется отправка данных (отправка и остановка)

Вы должны подождать, пока это будет сделано.

Добавьте код после writer.flush();

Пример получения response:

BufferedReader in = new BufferedReader(
        new InputStreamReader(urlConnection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();

while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();

Или просто получите responseCode:

int responseCode = urlConnection.getResponseCode();

Ваша программа ожидает успешной отправки запроса или неудачи.

Я думаю, вы используете Thread.sleep(100); для ожидания отправки запроса, но он останавливает ваш поток (не отправляйте данные на сервер)

В вашем коде есть req.body, в Express.js его нет, необходимо использовать промежуточное ПО body -parser.

2
hong4rc 23 Сен 2018 в 00:15