【问题标题】:LWP::Simple get() fails mysteriouslyLWP::Simple get() 神秘地失败了
【发布时间】:2019-06-17 04:22:56
【问题描述】:

http://perlmeme.org/tutorials/lwp.html 中,LWP::Simple 的第一个示例不起作用。我只是复制代码并运行:

use strict;
use warnings;
use LWP::Simple;

my $content = get('http://www.perlmeme.org') or die 'Unable to get page';
print $content; 

 exit 0;

它不起作用,抛出错误:Unable to get page at get.pl line 6.

发生了什么事?

【问题讨论】:

  • 为我工作...?这个perl -MLWP::Simple -wE'say get("http://www.perlmeme.org")' 打印页面(从命令行运行)。
  • 谢谢,也没有用,我在 -e 第 1 行的 EOF 之前的任何地方都找不到字符串终止符“'”。还尝试了 perl -e LWP::Simple -wE 'say get( "perlmeme.org")' ,运气不好
  • 哦...这是关于基本语法的...好吧,我的意思是说您可能有连接问题或类似问题(因为它对我有用)。
  • 你可能是对的,我的防火墙和代理正在过滤掉我的脚本,我将不得不在家里尝试,但它非常令人沮丧,因为你可能可以理解,在我读到的任何地方他们都告诉 LWP useragent 是如此容易,但我什至不能简单地得到一个 json。我会在另一篇文章中问这个问题。对不起...
  • 嗯,很抱歉……我确实感到沮丧。这个问题,好像不是模块的问题。那个JSON 的东西……是的,问个问题。

标签: perl lwp


【解决方案1】:

LWP::Simple 真的很简单。它假定GET 请求可能会成功并且不提供任何有趣的错误信息。

试试这个:

use strict;
use warnings;
use LWP::UserAgent;

my $agent = LWP::UserAgent->new;
my $response = $agent->get('http://www.perlmeme.org');

$response->is_success or die $response->status_line;
print $response->decoded_content;

这至少应该给你一个错误信息。

(最后你不需要exit 0;无论如何这是默认行为。)

【讨论】:

  • 谢谢,但没用,我得到:500 Can't connect to www.perlmeme.org:80 at get.pl line 8.
  • @dbnoob 你能ping www.perlmeme.org吗?另外,您使用的是什么操作系统?
  • 不,我无法 ping,我在代理和防火墙后面,但我尝试了 Intranet 网站,但仍然没有运气。但我收到 401 未经授权的错误...可能就是这个原因。
  • @dbnoob 是的,看起来有些东西阻止了您的连接尝试。 401 表示连接成功,但站点本身拒绝了您的请求。它可能需要用户名/密码。
  • 大家好,它可以在家工作。谢谢 zdim 和 melpomene
猜你喜欢
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2023-03-30
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
相关资源
最近更新 更多