如何从HTTP :: Daemon获取方法

时间:2019-06-12 06:01:38

标签: perl

如何在HTTP::Daemon模块中找到$code$mess?在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 个答案:

答案 0 :(得分:1)

文档还指出

  

如果省略$code,则假定为200。如果省略$mess,则插入与$code相对应的消息。如果缺少$proto,则使用$HTTP::Daemon::PROTO变量的内容。

因此,您根本不必指定参数。否则,只需对$code使用任何可能的HTTP status codes,而不必指定$mess来获取代码的默认消息,或者使用任何您喜欢的消息。

RC_FORBIDEN是从HTTP::Status导出的。