现在我得到的内容类型无法使用。这是工作流的实际摘要或场景,工作流需要更精确,以便它准确地解释自己:
请说明我做错了什么。
use LWP::UserAgent;
use HTTP::Request::Common;
my $sendXML="INPUT.XML";
my $resultXML="RESULT.XML";
my $message = <<'XML';
<criteria>
<includeFilterSets>
<filterSet>
<filter>
<filterName>PRODUCT_NAME</filterName>
</filterSet>
</excludeFilterSets>
</entityToSearch>
<criteria>
XML
my $webpage="http://example.com/";
#my $webpage = HTTP::Request->new(GET => 'http/Testlocation');
my $ua = LWP::UserAgent->new;
my $response = $ua->post($webpage, Content_Type => 'text/xml', Content => $message);
if ($response->is_success) {
print $response->decoded_content; # or whatever
}
else {
#die $response->status_line;
print $response->decoded_content;
}
答案 0 :(得分:6)
你已经构建了一个inifinte循环。这就是你的内存不足警告的来源。
my $message="test";
open(XML,$sendXML);
while ("
<includeFilterSets>
<filterSet>
<filter>
<filterName>VERSION_NAME</filterName>
<operator>
<name>In</name>
</operator>
<value>10.0u</value>
</filter>
</filterSet>
</includeFilterSets>") {
}
close XML;
我不知道你想用这个来实现什么,但这不是你想要做的。此代码段执行以下操作:
$test
设为'test'$sendXML
close
。其余代码没问题。
你想要做的就是这个。我遗漏了文件句柄。
my $message = <<'XML';
<includeFilterSets>
<filterSet>
<filter>
<filterName>VERSION_NAME</filterName>
<operator>
<name>In</name>
</operator>
<value>10.0u</value>
</filter>
</filterSet>
</includeFilterSets>
XML
my $webpage="http://example.com/";
my $ua = LWP::UserAgent->new;
my $response = $ua->post($webpage, Content_Type => 'text/xml', Content => $message);
if ($response->is_success) {
print $response->decoded_content; # or whatever
}
else {
die $response->status_line;
}
建议之一:始终use strict
和use warnings
,并查看三参数打开和词法文件句柄。这将使您的生活更轻松。