Заголовок Сервера HttpListener c#

Насколько я понимаю, каждый Switch будет содержать один Buttons объект, который содержит словарь, представляющий несколько кнопок.

Класс Switches представляет собой несколько переключателей:

Просто присвойте каждому переключателю атрибут кнопок:

class Switch:

    def __init__(self):
        self.switches = {}

    def add_switch(self, number, buttons):
        self.switches[number] = buttons

И при создании передачи переключателя в объекте Buttons :

switches = Switches(b)
b = Buttons(2, "scene")
switches.add_switch(10, b)

И вы по-прежнему можете получить доступ к основным кнопкам переключателя. Например, добавление кнопок к 10-му переключателю:

switch.switches[10].add_btn(...)

И если вы хотите быть модным, вы можете реализовать __getitem__, чтобы можно было индексировать switch напрямую. Внутри Switches:

def __getitem__(self, item):
    return self.switches[item]

С помощью этого метода вы можете добавлять кнопки напрямую:

switch[10].add_btn(...)
10
задан Yossi Dahan 9 January 2009 в 08:30
поделиться

2 ответа

Класс HttpListener инкапсулирует встроенный API, Функцию HttpSendHttpResponse, которая, как указано в ссылке будет всегда добавлять нелепый текст к информации заголовка сервера.

Нет никакого пути, как зафиксировать это, если Вы не хотите кодировать свой HttpListener с нуля.

9
ответ дан 3 December 2019 в 20:45
поделиться

Я действительно пробовал, но это возвращается с Моим Персональным Сервером Microsoft-HTTPAPI/2.0

Я также использовал без успеха, установил, удалите, добавьте, addheader

private void ProcessRequest(IAsyncResult result)
        {
            HttpListener listener = (HttpListener)result.AsyncState;
            HttpListenerContext context = listener.EndGetContext(result);

            string responseString = "<html>Hello World</html>";
            byte[] buffer = Encoding.UTF8.GetBytes(responseString);
            context.Response.ContentLength64 = buffer.Length;

            //One
            context.Response.AddHeader("Server", "My Personal Server");

            //Two
            context.Response.Headers.Remove(HttpResponseHeader.Server);
            context.Response.Headers.Add(HttpResponseHeader.Server, "My Personal Server");

            //Three
            context.Response.Headers.Set(HttpResponseHeader.Server, "My Personal Server");

            System.IO.Stream output = context.Response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            output.Close();

            Listener.BeginGetContext(ProcessRequest, Listener);
        }

Спасибо Elijah

1
ответ дан 3 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: