Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 18
1

Web server, POST и GET запросы

10.07.2019, 15:41. Показов 4339. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Visual Studio 2019. C#. Windows 10.
Необходимо отлавливать нажатие кнопки на странице и в зависимости от нажатой кнопки выводить пользователю на той же странице ответ.
Как отправить ответ я знаю, но вот как принять данные от пользователя ума не приложу.
В какую сторону копать? Что можно прочитать про POST запросы и C#?
Как на данный момент выглядит сервер:
C#
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
private void Form1_Load(object sender, EventArgs e)
{
    // Определим нужное максимальное количество потоков
    // Пусть будет по 4 на каждый процессор
   int MaxThreadsCount = Environment.ProcessorCount * 4;
   // Установим максимальное количество рабочих потоков
   ThreadPool.SetMaxThreads(MaxThreadsCount, MaxThreadsCount);
   // Установим минимальное количество рабочих потоков
   ThreadPool.SetMinThreads(2, 2);
   // Создадим новый сервер на порту 80
   new Server(80);
}
 
class Server
{
TcpListener Listener; // Объект, принимающий TCP-клиентов
 
// Запуск сервера
public Server(int Port)
{
    Listener = new TcpListener(IPAddress.Any, Port); // Создаем "слушателя" для указанного порта
    Listener.Start(); // Запускаем его
 
    // В бесконечном цикле
    while (true)
    {
         ThreadPool.QueueUserWorkItem(new WaitCallback(ClientThread), Listener.AcceptTcpClient());
    }
}
 
static void ClientThread(Object StateInfo)
{
    Console.WriteLine("Подключен новый клиент");
     // Просто создаем новый экземпляр класса Client и передаем ему приведенный к классу TcpClient объект StateInfo
     new Client((TcpClient)StateInfo);
}
 
// Остановка сервера
~Server()
{
// Если "слушатель" был создан
if (Listener != null)
{
// Остановим его
Listener.Stop();
}
}
 
public Client(TcpClient Client)
{
// Код простой HTML-странички
string Html = "" +
"It works! <button>Test</button>" +
"";
// Необходимые заголовки: ответ сервера, тип и длина содержимого. После двух пустых строк - само содержимое
string Str = "HTTP/1.1 200 OK\nContent-type: text/html\nContent-Length:" + Html.Length.ToString() + "\n\n" + Html;
// Приведем строку к виду массива байт
byte[] Buffer = Encoding.ASCII.GetBytes(Str);
// Отправим его клиенту
Client.GetStream().Write(Buffer, 0, Buffer.Length);
// Закроем соединение
Client.Close();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2019, 15:41
Ответы с готовыми решениями:

The Web server reported the following error when attempting to create or open the WEB project located at the following URL:...
Привет всем. Установил на 2003сервере Visual Studio Net - 2003. Решил создать новый проект для C#...

Установка SQL Server 2000 на Windows Server 2003 Web Edition
Не могу установить SQL Server 2000 на Windows Server 2003 Web Edition. Если запускаю установку из...

IIS server 6 на windows server 2003, настройка web-узла
Здравствуйте, нужна помощь по такому вопросу. Я работаю на виртуалке, на ней я установил server...

Web Server своими руками на Windows Server 2008
Всем доброго времени суток! Поскольку в этом деле я вообще не шарю, обращаюсь к Вам дорогие...

3
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 606
Записей в блоге: 6
10.07.2019, 20:53 2
Цитата Сообщение от HEKPUCT Посмотреть сообщение
В какую сторону копать? Что можно прочитать про POST запросы и C#?
немного непонятно, какие кнопки у Вас. На сайте или на форме?
Про приём и передачу по TCP, лично я смотрел примеры на чатах
Вот один из них
https://www.codeproject.com/Ar... on-Using-C
Если Вам нужны POST запрос-ответ

Вот Вам простой пример логина
PHP
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
<?PHP
$con = mysqli_connect('localhost', 'admin', 'password', 'DB');
 
//check con happened
if(mysqli_connect_errno())
{
    echo "1: Connection failed";//error code #1 - нет подключения
    exit();
}
$name = $_POST["name"];
$passwd = Trim($_POST["passwd"]);
//$Salt = base64_encode(md5($passwd, true));
 
//check if name exist
$namecheckquery = "SELECT * FROM users WHERE name='" .$name. "';";
$namecheck = mysqli_query($con, $namecheckquery) or die ("#2: Ошибка проверки имени");//error code #2 
if (mysqli_num_rows($namecheck) > 0) {
    $existinginfo = mysqli_fetch_assoc($namecheck);
        if ($existinginfo['passwd'] == base64_encode(md5($passwd, true))) {
        echo "Подключение!";
        //тут дальнейшие действия если нужны
    }else {
        echo "#3: не верный пароль";
    }
}else {
    echo "#2: Не верный логин";
}
    
 
?>
C#
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
31
32
33
34
35
    private string loginURL = "http://localhost/login.php";
    private string userName = txtUName.Text ;
    private string userPass = txtPass.Text;
 
void Login()
    {
        if (!IsValid(userName.text, 4, 40, "Имя") || !IsValid(userPass.text, 6, 20, "Пароль")) return;
 
        WWWForm form = new WWWForm();
        form.AddField("name", userName.text);
        form.AddField("passwd", userPass.text);
        WWW www = new WWW(loginURL, form);
        StartCoroutine(LoginFunc(www));
    }
 
IEnumerator LoginFunc(WWW www)
    {
        yield return www;
 
        if (www.error == null)
        {
            if (string.Compare(www.text, "Подключение!") == 0) // получаем в ответе слово-ключ из файла login.php
            {
                MessageBox.Show("Успешно!");
            }
            else
            {
                MessageBox.Show(www.text);
            }
        }
        else
        {
            MessageBox.Show("Error: " + www.error);
        }
    }
0
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 18
10.07.2019, 22:49  [ТС] 3
Меня интересует возможность получения событий с формы сайта. Т.е. отлов нажатия кнопки на WEB форме, совершение каких-либо действий в программе и ответ обратно в WEB форму.
Мне необходимо принимать POST запрос с сайта, если проще говоря.
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
10.07.2019, 23:07 4
HEKPUCT, Вы можете событие нажатия отлавливать с помощью JS и отправлять запрос на сервер через WS соединение. WS сервер для C# ставите в своё приложение и запускаете.
https://developer.mozilla.org/... ket_server

Добавлено через 1 минуту
Если хорошо порыться, то можно уже найти готовые библиотеки для WS серверов
https://www.codeproject.com/Ar... -in-Csharp

Добавлено через 41 секунду
https://github.com/statianzo/Fleck
0
10.07.2019, 23:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2019, 23:07
Помогаю со студенческими работами здесь

Server 2003 как VPN клиент + Web server
Здравствуйте уважаемые профессиональные администраторы. Я не системный администратор но немного...

Web Server + ADO = Internal Server Error 500
Делал почти по книжке: В C++ Builder 6 сделал новый Web Server (CGI), вставил...

POST и GET запросы
Знаю ,что в GET запросе спец символы представляются шестнадцатеричными кодами, в POST запросе токая...

POST запросы
на моем сайте все запросы post принимает вот такая функция: function isPost() { return...

post-get запросы
Задача такая, надо авторизоваться на сайте, и далее какие-то действия произвести. Искал исходники...

Post запросы
Привет всем. Как можно сделать html страничку, на которой сначала отправлялся бы пост запрос с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru