Как получить методы из HTTP :: Daemon - PullRequest
0 голосов
/ 12 июня 2019

Как узнать модуль $code и $mess в HTTP :: Daemon ? В cpan используется как

$c->send_status_line( $code, $mess, $proto )

но я не знаю, где / как взять $code, $mess.

Например, send_error($code) используется как send_error(RC_FORBIDDEN), который я нашел в чьем-то коде онлайн, откуда он взял RC_FORBIDDEN? Поиграл со следующим кодом. Извините за форматирование и большое спасибо @choroba за форматирование для меня.

    use warnings;
    use strict;
    use HTTP::Daemon;
    use HTTP::Status;
    use LWP;

    my $daemon = HTTP::Daemon->new or die;
    my $d = HTTP::Daemon->new(
    LocalAddr => '0.0.0.0',
    LocalPort => '5000',
    );
    printf ("\n\n   URL of webserver is %s, show this script with %stest\n", 
    $d->url, $d->url);

    while (my $client_connection = $d->accept)  
            {
                new_connection($client_connection);
            }
    sub new_connection 
    { 
    my $client_connection = shift;
    printf "new connection\n";
    while (my $request = $client_connection->get_request) 
    {
        if (my $pid = fork)
            {
                print "Child created : $pid\n";
            }
        elsif (!defined $pid)
            {
                die "Cannot fork $!\n";
            }
        else
            {
                my $address_of_client = $client_connection->peerhost();
                my $port_of_client = $client_connection->peerport();
    print "Connection from client $address_of_client on port 
    $port_of_client\n";
                print "  request\n";
                    if ($request->method eq 'GET' and $request->uri->path 
    eq "/test") 
                        {
                            $client_connection->send_file_response(RC_OK);
                            #$client_connection->send_status_line(200);
                            #print "OK ";
                            #$client_connection->send_file_response($0);
                        }
                    else 
                        {
                            $client_connection->send_error(RC_NOT_FOUND);
                        }
            }
    $client_connection->close;
    } 
   }

1 Ответ

1 голос
/ 12 июня 2019

В документации также говорится

Если $code опущено, предполагается 200.Если $mess опущено, вставляется сообщение, соответствующее $code.Если $proto отсутствует, используется содержимое переменной $HTTP::Daemon::PROTO.

Таким образом, вам не нужно указывать аргументы вообще.В противном случае просто используйте любой из возможных кодов состояния HTTP для $code и либо не указывайте $mess, чтобы получить сообщение по умолчанию для кода, либо используйте любое сообщение, которое вам нравится.

RC_FORBIDEN экспортируется из HTTP :: Status .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...