1

Тема: Написати http запит

Добрий вечір
Необхідно написати http запит до контролера на виконання команди включення. Запит буде надсилатися з сайту в локальній мережі.
Запит до контролеру через cmd виглядає наступним чином: telnet 192.168.10.12 5000 (ip адреса + порт), а сам запит: ON[1]+ натискання ентер
Для входу на контролер з браузеру, необхідно передати логін та пароль: login:pass@192.168.10.12:5000
Стоїть завдання об'єднати два методи для можливості управління кнопкою контролера з сайту, що знаходиться на пристрої в локальній мережі
Я так розумію, через cmd передаються невидимі символи.
Маю надію що зрозуміло описав.
Чи може хтось написати і скільки це буде вартувати?

Подякували: leofun011

2

Re: Написати http запит

А просто через curl?

Подякували: leofun011

3

Re: Написати http запит

От було б чудово, якщо б я розумів про що Ви говорите...))
Я не програміст, тому відразу розмістив тему тут.
Як допоможете, буду дуже вдячний

4 Востаннє редагувалося leofun01 (21.02.2018 02:05:52)

Re: Написати http запит

Запит з передаванням логіну і паролю має вигляд
<протокол>://[<логін>[:<пароль>]@]<ip або домен>[:<порт>]
[] - необов'язковий елемент.

Для
<чистий логін> = "login"
<чистий пароль> = "pass!@#"
<ip або домен> = "www.example.org"

потрібно спочатку конвертувати <чистий логін> і <чистий пароль> в так званий "URL encoded format".
Це можна зробити в Notepad++ :
Виділити текст => головне меню вікна => Плагіни => MIME Tools => URL Encode.
Отримаємо
<логін> = "login"
<пароль> = "pass!%40%23"

Приклад використання :
http://login:pass!%40%23@www.example.org:80
https://login:pass!%40%23@www.example.org:443
ftp://login:pass!%40%23@www.example.org:21

У вашому випадку буде щось таке :
http://login:pass@192.168.10.12:5000
але я не пам'ятаю як правильно передати команду ON. Можливо доведеться редагувати заголовок запиту.

Подякували: LoganRoss1

5 Востаннє редагувалося yrn (21.02.2018 02:14:15)

Re: Написати http запит

leofun01 написав:

У вашому випадку буде щось таке :
http://login:pass@192.168.10.12:5000
але я не пам'ятаю як правильно передати команду ON. Можливо доведеться редагувати заголовок запиту.

Ви повністю правий, буде саме таке. Це написано мною в першому посту.
Проблем з логіном та паролем не має
А ось проблема в мене якраз з передачею ON, та символу ентер.

Подякували: leofun011

6 Востаннє редагувалося leofun01 (23.02.2018 05:05:08)

Re: Написати http запит

yrn написав:

Це написано мною в першому посту.

Шось я затупив.

Який бровзер використовуєте ?

7

Re: Написати http запит

Якщо ви за браузер, то я з сафарі пробую постійно.
Але код не має бути привязаним до браузеру

Подякували: leofun011

8

Re: Написати http запит

Ще знайшов букварик по NetString 1.1:
"Обмен командами и сообщениями между контроллером и устройством производится в текстовом виде по протоколу TCP/IP
Каждая команда или сообщение заканчивается разделителем – CR+LF (0x0D и 0x0A)"
Можливо щось допоможе

9 Востаннє редагувалося leofun01 (21.02.2018 04:17:33)

Re: Написати http запит

Протокол HTTP для цієї задачі зовсім не підходить, бо як би не були змінені поля заголовку запиту, першою стрічкою завжди буде
GET /path/... HTTP/1.1
не обов'язково "GET" і не завжди "1.1", але суть в тому, що вписати "ON" там не получитиься.

Але можна використати WebSocket. В бровзері відкрити панель розробника, вкладка консоль (якщо така є, я не знаю як там в сафарі, в мене firefox) і вставити код :

// Створити WebSocket.
var socket = new WebSocket('ws://login:pass@192.168.10.12:5000');

// Додати прослуховувача на відкриття з'єднання
socket.addEventListener('open', function (event) {
    socket.send('ON'); // команда ON
});

// Додати прослуховувача на отримання повідомлення
socket.addEventListener('message', function (event) {
    console.log('Message from server : ', event.data);
});

// в кінці закрити з'єднання
socket.close();

Повинно спрацювати.

+
Треба читати WebSocket Protocol і Living Standard.

Подякували: yrn1

10

Re: Написати http запит

Спробую

11

Re: Написати http запит

Нічого не вийшло
[Error] WebSocket connection failed: WebSocket is closed before the connection is established
Програмування то не моє, може хто візьметься таки написати працюючий код

12

Re: Написати http запит

var socket = new WebSocket('ws://root:root@192.168.100.15:5001');
 
socket.addEventListener('open', function (event) {
    socket.send('ON[6]');
});
 
socket.addEventListener('message', function (event) {
    console.log('Message from server : ', event.data);
});
 
socket.close();

13

Re: Написати http запит

Спробував добавити недруковані символи \r\n після команд контролеру
резутьтат такий же

var socket = new WebSocket('ws://root:root@192.168.100.15:5001\r\n');
 
socket.addEventListener('open', function (event) {
    socket.send('ON[6]\r\n');
});
 
socket.addEventListener('message', function (event) {
    console.log('Message from server : ', event.data);
});
 
socket.close();
Подякували: leofun011

14

Re: Написати http запит

о, нічого не сталось, але помилка змінилась
WebSocket connection to 'ws://root:root@192.168.100.15:5001/' failed: Invalid HTTP version string: DEVICE
Спробую з іншого компа
Чи може версію хттп прописати де можна?

15

Re: Написати http запит

А ось таку помилку видає хром на вінді:
WebSocket connection to 'ws://root:root@192.168.100.15:5001/' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE

Подякували: leofun011

16 Востаннє редагувалося yrn (23.02.2018 20:51:52)

Re: Написати http запит

Хто небуть, візьміться за запит!
Прийдеться майбуть на фріланс іти, якщо тут ніхто не може таке написати((

17

Re: Написати http запит

yrn написав:

Хто небуть, візьміться за запит!
Прийдеться майбуть на фріланс іти, якщо тут ніхто не може таке написати((

Ви тут гроші запропонуйте і вам зроблять..