Perl:HTTP :: Request中响应代码的值

时间:2010-06-15 11:07:59

标签: perl http request

所以,我正在编写一个代码来从互联网上获取文档。文档大小约为200 KB。这是代码:

#!/usr/local/bin/perl -w
use strict;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $url = "SOME URL";
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);

if($res->is_success){
   print $res->content ."\n";
}
else{
  print "Error: " . $res->status_line;
}

现在,唯一的问题是我不能提到URL是什么。

但是,输出为:“错误:500读取超时”。当我从外部检查链接时,数据将在5秒内下载。

我甚至将超时更改为1000秒,但仍然无法正常工作。我该如何查找有关响应的更多信息?文件大小(大约200KB)也不足以保证读取超时。服务器也不繁忙,每当我检查浏览器上的链接时都没有出现问题。

感谢。

3 个答案:

答案 0 :(得分:0)

确保未将webserver配置为在此情况下从脚本中删除请求。

答案 1 :(得分:0)

当网络应用程序给您带来麻烦时,debug using Wireshark

答案 2 :(得分:0)

Web服务器(Apache / nginx)可能有一个用PHP / Python /编写的后端应用程序。可能后端没有回答任何问题,因此Web服务器停止等待(达到超时)并在http请求{@ 3}}上回答您。

一个很棒的测试工具是curl -v

curl --verbose --head "SOME URL"
  • --head仅获取http响应标头。
  • 如果来自浏览器上的同一主机,一切正常,您的http请求标头中的某些内容会产生差异。您可以看到con browser dev工具发送的内容并添加5xx (internal server) error。调整卷曲参数Web服务器无法判断收到的http req是来自Web浏览器,脚本还是其他任何内容(协议魔术!)。
  • 使用-s(无声)和2>&1to curl with -H, --header <header>至less / head / tail。