Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^2: HTTP Post of XML data

by hallikpapa (Scribe)
on Nov 14, 2007 at 03:46 UTC ( #650668=note: print w/replies, xml ) Need Help??

in reply to Re: HTTP Post of XML data
in thread HTTP Post of XML data

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/ 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

Replies are listed 'Best First'.
Re^3: HTTP Post of XML data
by rvosa (Curate) on Nov 14, 2007 at 05:42 UTC
    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.


        I am using 5.8.8 on this box. I ended up just writing it to a file, and then reading that file into $data and doing a
        my $response = $browser->post( $url, Content => $data );
        But I am getting an error, I think may be java in the jboss log.
        14 Nov 2007 00:15:56,547 INFO [STDOUT] REQUEST RECEIVED BY SERVLET:<m +anager xmlns:xsi="" > 14 Nov 2007 00:15:56,547 ERROR [STDERR] [Fatal Error] :1:69: XML docum +ent structures must start and end within the same entity.
        Is this LWP::UserAgent creating an html tag or header screwing up the post? I am looking into that, but I just want to send ONLY what is in the file, but it's probably sending extra data?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://650668]
and monks are getting baked in the sun...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (3)
As of 2018-03-18 13:58 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (230 votes). Check out past polls.