现在我得到的内容类型无法使用.这是工作流的实际摘要或场景,工作流需要更精确,以便它准确地解释自己:
请告诉我我做错了什么.
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;
}
Run Code Online (Sandbox Code Playgroud)
你已经构建了一个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;
Run Code Online (Sandbox Code Playgroud)
我不知道你想用这个来实现什么,但这不是你想要做的.此代码段执行以下操作:
$test为'测试'$sendXMLclose从未达到.你的其余代码还可以.
你想做的就是这个.我遗漏了文件句柄.
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;
}
Run Code Online (Sandbox Code Playgroud)
一句忠告:始终use strict和use warnings,并看看三个参数打开和词法文件句柄.这将使您的生活更轻松.