in reply to New Bing Search Api (5)

Just for the sake of reference. This is a working script I could manage to come up with (key must be changed)

#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use JSON; my $BingKey="your key"; my $MyBingJsonQuery = "Hello"; my $href= 'https://api.cognitive.microsoft.com/bing/v5.0/search?q= +bill gates&count=20&mkt=en-us&safesearch=Moderate'; print "Connecting to Bing for: $href\n"; my $ua= LWP::UserAgent->new(); my $req = HTTP::Request->new(GET => $href); $req->header('content-type' => 'application/json'); $req->header('Ocp-Apim-Subscription-Key'=>'d1490494840c4a1dbdd499a +eee7ded9e'); $req->header('host'=>'api.cognitive.microsoft.com'); my $res = $ua->request($req); print $res->as_string; # Check the outcome of the response if ($res->is_success) { print "I could connect to the API\n"; my $resp= $ua->get($href); my $data = decode_json($resp->content); my @urls = map { $_->{'Url'} } @{ $data->{d}->{results} }; } else { print "Impossible retrieving info from Web\n"; }

Replies are listed 'Best First'.
Re^2: New Bing Search Api (5)
by alain_desilets (Beadle) on Sep 25, 2018 at 13:47 UTC
    I tried the above and it did not seem to work. But I modified it slightly according to code I had written in Java, and it works. It uses v7 of the Bing API. Here is my slightly modified code below.
    #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use JSON; my $bing_key="PUT_YOUR_KEY_HERE"; my $query = "Hello"; { my $href = "https://api.cognitive.microsoft.com/bing/v7.0/search?q +=$query&Accept=application%2Fjson&offset=0&count=10&subscription-key= +$bing_key"; print "Connecting to Bing for: $href\n"; my $ua= LWP::UserAgent->new(); my $req = HTTP::Request->new(GET => $href); print "-- \$href=$href\n"; $req->header('content-type' => 'application/json'); my $res = $ua->request($req); print $res->as_string; # Check the outcome of the response if ($res->is_success) { print "I could connect to the API\n"; my $resp= $ua->get($href); my $data = decode_json($resp->content); my @urls = map { $_->{'Url'} } @{ $data->{d}->{results} }; } else { print "Impossible retrieving info from Web\n"; } } 1;