http://qs1969.pair.com?node_id=789456

zer has asked for the wisdom of the Perl Monks concerning the following question:

Hi,
I have been toying with POE::Component::Server::HTTP and HTTPServer. Ive found that with both of them when they recieve a request with content in the message that there is nothing in it.
I follow the examples as per the pod but nothing. This is what i am sending.
GET http://localhost:8000/user/ HTTP/1.1 Accept: text/x-json Content-Type: text/x-json Content-Length: 10 {"Password":"blah","Username":"blah"}
Any help or direction would be appreciated, i havent had any luck anywhere else, aside from maybe my version of LWP is different.

Replies are listed 'Best First'.
Re: POE HTTP Server
by rcaputo (Chaplain) on Aug 18, 2009 at 21:20 UTC
Re: POE HTTP Server
by Anonymous Monk on Aug 18, 2009 at 13:47 UTC
    Ive found that with both of them when they recieve a request with content in the message that there is nothing in it.

    :D please show code

      sub _load{ my ($self, %args)= @_; print "Loading Server: "; if ($args{config} && $args{EventHandler}){ $self->{config}=$args{config}; $self->{EH}=$args{EventHandler}; }else{ die 'Config not set!' } $self->{EH}->setWWW($SELF->{www}); $self->{www} = POE::Component::Server::HTTPServer->new(); $self->{www}->port($self->{config}->{Port}); $self->{www}->handlers([ '/' => \&handler]); } sub start{ print "Server Running\n"; $poe_kernel->run(); } sub handler { my ( $context)=@_; print $context->{request}->content }
        sorry, I should have specified that you post a self-contained runnable code which demonstrates the problem. Something like
        # server.pl #!/usr/bin/perl -- use strict; use warnings; use POE; use POE::Component::Server::HTTP; my $poco = POE::Component::Server::HTTP->new( Address=>'localhost', Port => 8000, ContentHandler => { '/' => \&handler, }, ); $poe_kernel->run; sub handler { my ($request, $response) = @_; print $request->as_string,"\n"; $response->code(200); $response->content("You sent: ", $request->content); return 200;#RC_OK } __END__ # client.pl #!/usr/bin/perl -- use strict; use warnings; use LWP; print LWP::UserAgent->new->get( qw[ http://localhost:8000/user/ Accept text/x-json Content-Type text/x-json ], Content => q[{"Password":"blah","Username":"blah"}], )->as_string; __END__
        I think it is a bug in POE::Component::Server::HTTP
Re: POE HTTP Server
by Anonymous Monk on Aug 18, 2009 at 15:05 UTC
    I figured it out!!! You want to POST not GET
    print LWP::UserAgent->new->post( qw[ http://localhost:8000/user/ Accept text/x-json Content-Type text/x-json ], Content => q[{"Password":"blah","Username":"blah"}], )->as_string;