Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / tcpListener.AcceptTcpClient() не срабатывает при POST запросе / 6 сообщений из 6, страница 1 из 1
28.01.2021, 12:07
    #40039595
tcpListener.AcceptTcpClient() не срабатывает при POST запросе
Коллеги, тапками не кидайтесь - я в web не понимаю вообще ничего.

Дано:

Самописный "htpp-сервер" на c# - без ASP.NET, самый простой на базе tcpListener. Он слушает определенный порт, приняли соединение клиента, получили поток, распарсили, поняли чего хочет клиент, ответили в поток клиента, закрыли соединение.

Есть страница генерируемая этим самым "сервером".Для отладки все запущено на localhost

На ней в таблице кнопка, по кнопке собираются данные с реквизитов страницы (и самой кнопки) в json, формируется fetch и отправляется для обработки на этот самый сервер. Но запрос не достигает сервера, т.е. метод AcceptTcpClient() не вызывается. Если смотреть в консоли хрома - fetch в состоянии "pending" и "caution request is not finished yet".

.............

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<table border="1">
   <tr>
    <th>Заголовок</th>
      ...
    <th>Статус</th>
   </tr>
   <tr><td>....<td><button type="button" onclick="button_click(this)" data-setting-id="1">Получить</button></td>....</tr>
  </table>
 <script>
 			async function button_click(clicked_object)
			{
				
				let data = {
					settingId: clicked_object.getAttribute('data-setting-id'),
					dateBegin: document.getElementById('calendar1').value,
					dateEnd: document.getElementById('calendar2').value
					};

				let response = await fetch('http://127.0.0.1:9090/foo.html', {
					method: 'POST', 
					headers: {'Content-Type': 'application/json'},
					body: JSON.stringify(data)
				});

				alert(response.status);

			}
 </script>
</body>
</html>


Модератор: Учимся использовать тэги оформления кода - FAQ
Поставил Postman повторяю post запрос из него на тот же ресурс. tcpListener.AcceptTcpClient() срабатывает сразу только если post запрос вообще без "body" или параметры переданы через "multipart/form-data", если в Postman указать "raw-json" -> "application/json" (или raw-text - по сути не важно) - то отсылка запроса через Postman тоже "зависает" пока не сваливается по таймауту или я вручную не отменю запрос в Postman - только тогда tcpListener.AcceptTcpClient() срабатывает

Что я не так делаю?
...
Рейтинг: 0 / 0
28.01.2021, 12:14
    #40039597
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tcpListener.AcceptTcpClient() не срабатывает при POST запросе
Сама страничка с этим html-ом как открыта? С этого же сервера http://127.0.0.1:9090 или с другого?
Если с другого или, скажем, это локальный файл - кури CORS
...
Рейтинг: 0 / 0
28.01.2021, 12:14
    #40039598
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tcpListener.AcceptTcpClient() не срабатывает при POST запросе
Неистовый Служитель Культа
Если смотреть в консоли хрома - fetch в состоянии "pending" и "caution request is not finished yet".
Проверь метод в консоли хрома - POST или OPTIONS ?
...
Рейтинг: 0 / 0
28.01.2021, 12:16
    #40039600
tcpListener.AcceptTcpClient() не срабатывает при POST запросе
Shocker.Pro
Неистовый Служитель Культа
Если смотреть в консоли хрома - fetch в состоянии "pending" и "caution request is not finished yet".
Проверь метод в консоли хрома - POST или OPTIONS ?


POST
...
Рейтинг: 0 / 0
28.01.2021, 12:17
    #40039601
tcpListener.AcceptTcpClient() не срабатывает при POST запросе
Shocker.Pro
Сама страничка с этим html-ом как открыта? С этого же сервера http://127.0.0.1:9090 или с другого?
Если с другого или, скажем, это локальный файл - кури CORS


с этого же. все в пределах одного хоста
...
Рейтинг: 0 / 0
28.01.2021, 12:21
    #40039604
tcpListener.AcceptTcpClient() не срабатывает при POST запросе
Неистовый Служитель Культа
Shocker.Pro
пропущено...
Проверь метод в консоли хрома - POST или OPTIONS ?


POST


+
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public void Start()
        {
            new Thread(x => { Run(); }).Start();
        }

        private void Run()
        {
            tcpListener.Start();
            isRuning = true;

            while (isRuning)
            {
                    TcpClient client = tcpListener.AcceptTcpClient();
                    ClientProcessing(client); 
                    client.Close();
            }
        }



внутри ClientProcessing(client); стоит точка остановки - если бы на порт что-то пришло то я бы в VS увидел бы. GET приходит, а POST - как-"то выборочно"
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / tcpListener.AcceptTcpClient() не срабатывает при POST запросе / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]