Hi Dan, Absolutely agree with you about urlencoding, but it doesn't make a difference in this case.
#!/usr/bin/env perl use common::sense; use Mojo::UserAgent; use feature 'say'; my $ua = Mojo::UserAgent->new; my $url = Mojo::URL->new('http://klishe.ru/wp-json/posts')->query( 'filter[category_name]' => 'производители', 'filter[posts_per_page]' => '-1' , 'filter[nopaging]' =>'true', 'filter[order]' => 'ASC'); my $companies = $ua->get($url)->res->json; say scalar @$companies; If I change to *filter[posts_per_page]' => '150'* in script above - it works. Does the Mojo::UserAgent have any log to see what's wrong and what's an error message? среда, 15 июля 2015 г., 16:33:29 UTC+3 пользователь Dan Book написал: > > Your URL parameters are not being url encoded as required. Use a Mojo::URL > instead: > > my $url = > Mojo::URL->new('http://klishe.ru/wp-json/posts')->query('filter[post_status]' > => 'publish', ...); > > > On Wed, Jul 15, 2015 at 7:35 AM, Pavel Serikov <pavel.p...@gmail.com > <javascript:>> wrote: > >> Hi guys, >> >> Here is a description of new problem which I don't understand how to >> solve. >> >> I need to use Mojo::UserAgent to parse data from Wordpress site via >> WP-API <http://wp-api.org/>. >> >> If I use browser (just to verify that API url works correctly) - it works. >> >> E.g. this url >> http://klishe.ru/wp-json/posts?filter[post_status]=publish&filter[category_name]=производители&filter[posts_per_page]=-1&filter[nopaging]=true&filter[order]=ASC >> >> must return 446 json objects. >> >> Checked it with javascript: >> var obj = JSON.parse(document.body.textContent); >> console.log(obj.length); >> >> But if I use Mojo::UserAgent for getting data from same url - it returns >> nothing. >> >> Below is my Mojo script: >> >> #!/usr/bin/env perl >> >> use common::sense; >> use Mojo::UserAgent; >> use feature 'say'; >> >> my $ua = Mojo::UserAgent->new; >> #$ua->connect_timeout(0); >> #$ua->request_timeout(0); >> my $url = ' >> http://klishe.ru/wp-json/posts?filter[post_status]=publish&filter[category_name]=производители&filter[posts_per_page]=-1&filter[nopaging]=true&filter[order]=ASC >> '; >> my $companies = $ua->get($url)->res->json; >> say scalar @$companies; >> >> If I modify API url to limit numbers of returned objects (from >> filter[posts_per_page]=*-1* to filter[posts_per_page]=*150* ) everything >> works fine. >> >> I suppose that I need to increase some timeouts, but have no idea what >> exact. I tried to set different connect_timeout >> <https://metacpan.org/pod/Mojo::UserAgent#connect_timeout> and >> request_timeout >> <https://metacpan.org/pod/Mojo::UserAgent#request_timeout>, but even >> with unlimited timeouts it doesn't give any result. Also checked values of >> MOJO_CONNECT_TIMEOUT, >> MOJO_REQUEST_TIMEOUT and MOJO_INACTIVITY_TIMEOUT system variables, it isn't >> set. >> >> My Mojo is latest stable version, 6.14. >> >> Any suggestion is much appreciated. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Mojolicious" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to mojolicious...@googlegroups.com <javascript:>. >> To post to this group, send email to mojol...@googlegroups.com >> <javascript:>. >> Visit this group at http://groups.google.com/group/mojolicious. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+unsubscr...@googlegroups.com. To post to this group, send email to mojolicious@googlegroups.com. Visit this group at http://groups.google.com/group/mojolicious. For more options, visit https://groups.google.com/d/optout.