Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: HTTP Post of XML data

by dorko (Parson)
on Nov 14, 2007 at 03:37 UTC ( #650667=note: print w/ replies, xml ) Need Help??


in reply to HTTP Post of XML data

UPDATE: The original post was modified between the time I started writing and the time I posted this response. I'm sure my response looks odd now, so all bets are off on my response making any kind of sense.

Warning: Although I've submitted XML via a POST, I've never used XML::Writer in combination with LWP::UserAgent like you're trying to do.

From the docs for XML::Writer, the OUTPUT parameter of an XML::Writer object must be either an "object blessed into IO::Handle or one of its subclasses (such as IO::File), or a reference to a string." I'm pretty sure that $browser->post('http://localhost:8180/automanager/request') is neither of those.

Plus, from the SYNOPSIS section of the XML::Writer docs, I'm pretty sure all you've done is created an object. It takes a bit more to actually create XML. This untested snippet is modified from the synopsis of the XML::Writer docs:

my $output; my $writer = new XML::Writer(OUTPUT => \$output); $writer->startTag("greeting", "class" => "simple"); $writer->characters("Hello, world!"); $writer->endTag("greeting"); $writer->end(); print $output;
If you then POST $output to your URL, I think that will do what you want. You'll need to specify $object as the Content of the POST (See the REQUEST METHODS section of the LWP::UserAgent docs. I remember having to use HTTP::Request::Common to build the request, but I don't remember why I needed to do that at the moment.)

All this is from a quick read of the docs and from memory so it could all be way off base, but I think it at least points you in the right directions.

Cheers,

Brent

-- Yeah, I'm a Delt.


Comment on Re: HTTP Post of XML data
Select or Download Code
Re^2: HTTP Post of XML data
by hallikpapa (Scribe) on Nov 14, 2007 at 03:46 UTC
    Sorry for editing the original post. I should have left the original and added some of my changed content. I will check out some of your suggestions. Any other suggestions on how you would post your XML data instead of using LWP::UserAgent? Update: So I created a little test script, and I saw the test XML post in the jboss log correctly:
    #!/usr/bin/perl use XML::Writer; use LWP::UserAgent; my $output; my $writer = new XML::Writer(OUTPUT => \$output); $writer->startTag("greeting", "class" => "simple"); $writer->characters("Hello, world!"); $writer->endTag("greeting"); $writer->end(); print $output; my $browser = LWP::UserAgent->new; my $url = 'http://localhost:8180/request'; my $response = $browser->post($url,Content => $output);
    And I added this at the end of my current script, and got this error:
    Not an ARRAY reference at /usr/share/perl5/HTTP/Request/Common.pm line + 83.
    my $browser = LWP::UserAgent->new; my $url = 'http://localhost:8180/request'; my $response = $browser->post($url,$writer);
    I tried with Content => \$writer, CONTENT => $writer, and just $writer. I'll keep fiddling with this unless someone else has suggestions on a better way to post this $writer to a specific port/url
      It looks like you are trying to post an XML::Writer object to a URL. Without looking at the API for either XML::Writer or LWP::UserAgent I can only guess, but I seriously, seriously doubt that procedure is possible. What you will want to post is not the writer object, but the output it produces.
        I think he's trying to use Perl 5.8's "stringy filehandles".

        From the docs:

        OUTPUT An object blessed into IO::Handle or one of its subclasses (such a +s IO::File), or a reference to a string; if this parameter is not pre +sent, the module will write to standard output. If a string reference + is passed, it will capture the generated XML (as a string; to get by +tes use the Encode module).
        Looks fine to me.

        I wonder what version of perl is on the web-server.

        -David

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://650667]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2015-07-06 04:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls