[SPb-pm] AnyEvent::HTTPD vs POST

Ruslan Kuksa perl-list at spb.csat.ru
Tue Jun 17 02:50:16 PDT 2014


Спасибо за ответы.

Это оно самое. При отправке через curl --data-binary, данные печатаются

    print $req->content();

А как быть с application/x-www-form-urlencoded?
Что надо предпринимать?

17.06.2014 13:03, Andrey Chernomyrdin пишет:
> Просто content лучше использовать когда передается что-то типа 
> XML/JSON,например если сделать запрос таким образом:
> curl -s \
> -H 'Content-Type: text/xml' \
> -H 'SOAPAction: ""' \
> --data-binary '<soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
> xmlns:api="http://localhost/api"> 
> <soapenv:Header/><soapenv:Body><api:getOrganizationsRequest/></soapenv:Body></soapenv:Envelope>' 
> \
> http://localhost:9090/to-post
>
> То в $req->content получишь то, что указанно в --data-binary
>
>
> 2014-06-17 12:51 GMT+04:00 Denis Ibaev <dionys at gmail.com 
> <mailto:dionys at gmail.com>>:
>
>     В документации же сказано:
>
>     content - Returns the request content or undef if only parameters for
>     a form were transmitted.
>
>     А при Content-Type: application/x-www-form-urlencoded он думает, что
>     есть параметры. Это видно в
>     https://metacpan.org/source/ELMEX/AnyEvent-HTTPD-0.93/lib/AnyEvent/HTTPD/HTTPConnection.pm#L302
>
>     sub handle_request {
>     my ($self, $method, $uri, $hdr, $cont) = @_;
>
>     $self->{keep_alive} = ($hdr->{connection} =~ /keep-alive/io);
>
>     my ($ctype, $bound) = _content_type_boundary ($hdr->{'content-type'});
>
>     if ($ctype eq 'multipart/form-data') {
>     $cont = $self->decode_multipart ($cont, $bound);
>
>     } elsif ($ctype =~ /x-www-form-urlencoded/o) {
>     $cont = parse_urlencoded ($cont);
>     }
>
>     $self->event (request => $method, $uri, $hdr, $cont);
>     }
>
>
>     17 июня 2014 г., 12:00 пользователь Ruslan Kuksa
>     <perl-list at spb.csat.ru <mailto:perl-list at spb.csat.ru>> написал:
>     > задел меня доклад по AnyEvent, решил переписать одну фигню.
>     > Клиент отправляет данные на сервер методом POST:
>     >
>     > POST / HTTP/1.1
>     > Host: localhost:8080
>     > Accept: */*
>     > Content-Length: 1797
>     > Content-Type: application/x-www-form-urlencoded
>     > Expect: 100-continue
>     >
>     > Как вытащить те самые 1797 байтов данных?
>     > Чтение документации очень помогло, я узнал что это возможно, но не узнал
>     > как. (:
>
>     --
>     Денис Ибаев
>     _______________________________________________
>     Spb-pm mailing list
>     Spb-pm at pm.org <mailto:Spb-pm at pm.org>
>     http://mail.pm.org/mailman/listinfo/spb-pm
>
>
>
>
> -- 
> With best, Andrey Chernomyrdin
>
>
> _______________________________________________
> Spb-pm mailing list
> Spb-pm at pm.org
> http://mail.pm.org/mailman/listinfo/spb-pm



More information about the Spb-pm mailing list