2013-04-15 5 views
2

이제 콘텐츠 유형을 사용할 수 없게됩니다. 워크 플로의 실제 요약 또는 시나리오는 다음과 같습니다. 워크 플로가 더 정확해야 정확성을 설명 할 수 있습니다.perl에서 XML을 사용하는 POST 요청

내가 뭘 잘못하고 있는지 제안하십시오.

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

귀하의 requeriments에 대한 자세한 설명을주십시오. –

+2

그래서 무엇이 문제입니까? XML 구성? 그것을 HTTP 요청에 넣으시겠습니까? [cpan] (https://metacpan.org/)에서 XML을 처리하고 HTTP 요청을하기위한 모듈이 많이 있으며, 대부분은 꽤 좋은 문서를 가지고 있습니다. 어떤 모듈을 선택 했습니까? 설명서에 대해 이해하지 못하겠습니까? – Quentin

+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; 

나는 이걸 가지고 무엇을 달성하고 싶은지 모르지만, 당신이하고 싶은 것이 아닙니다. 이 조각은은 다음을

  • $sendXML에서 파일 이름에 파일 핸들을 열
  • '시험'에 $test을 설정가
  • 는만큼 XML 조각이 true 인 (아무것도하지 않고이 항상 사실이다 따라서 무한 루프)
  • close에 도달하지 않습니다.

나머지 코드는 괜찮습니다.

원하는 것은 무엇입니까? 나는 filehandle 물건을 버렸습니다.

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 strictuse warnings, 3-인수가 열리고 어휘 파일 핸들 봐. 이것은 당신의 인생을 훨씬 쉽게 만들어 줄 것입니다.

+0

잘 당신이 언급 한 무한 루프 없애고 싶어로서 POST를 사용하여 내 XML을 구문 분석 할 수 있습니다. –

+0

simbabque로 제안 된 코드를 실행 한 후 "콘텐츠 유형을 사용할 수 없습니다"라는 오류 메시지가 나타납니다. 이 문제를 해결하기 위해 내가 무슨 일을하는지. 제발 제안 해. –

+0

Simbabque 좀 도와주세요. –