perl XMLIN解析器错误 - 数据问题的过早结束



我对perl和XML非常新,所以请耐心等待我。

我的XMLIN有问题随机不喜欢返回的XML文件,即使我打开了两个不同的XML返回文件,它们都是相同的。

我提出了这个解决方案:

#Send HTTP Request
my $browser = LWP::UserAgent->new();   
my $req = HTTP::Request->new(POST => $endpointurl);
$req->content("@XML");
#Get HTTP Response Status
my $resp = $browser->request($req);
#Get Response Status
my $parser = XML::LibXML::Simple->new();
my $xmlResp = ();
$xmlResp = eval { $parser->XMLin($resp->content()) };
unless ($xmlResp)
{
    $xmlResp = eval { $parser->XMLin($resp->content()) };
}

,但我不确定这是"好实践",或者如果失败的话,将其循环循环的更好方法是。

这似乎有效,但我知道这并不能使它"正确"。

***该代码的这一部分是由UPS提供的,我没有写,我不100%理解它。

$ resp->内容如果请求不成功,则包含一个错误消息,这不是有效的xml。如果是永久错误,则该程序应停止,如果是瞬态错误,则重试,仅解析成功的内容。

use LWP::UserAgent::Determined qw();
my $browser = LWP::UserAgent::Determined->new;
...
my $resp = $browser->request($req);
if ($resp->is_success) {
    my $parser = ... etc. etc.
} else {
    die sprintf "could not POST to <%s>:nStatus %sn%sn"
        $endpointurl, $resp->status_line, $resp->content;
}

相关内容

  • 没有找到相关文章

最新更新