如何在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;
}
}
答案 0 :(得分:1)
文档还指出
如果省略
$code
,则假定为200。如果省略$mess
,则插入与$code
相对应的消息。如果缺少$proto
,则使用$HTTP::Daemon::PROTO
变量的内容。
因此,您根本不必指定参数。否则,只需对$code
使用任何可能的HTTP status codes,而不必指定$mess
来获取代码的默认消息,或者使用任何您喜欢的消息。>
RC_FORBIDEN是从HTTP::Status导出的。