in reply to Re^2: New Bing Search Api (5)
in thread New Bing Search Api (5)

Have you read the documentation you linked to?

It also shows you what kinds of errors the API could return.

Maybe you want to show us what exact kind of error you get back?

Printing out the full response might show you something that corresponds with the error types of the API:

print $res->as_string;

Maybe now is a good time to learn about HTTP and status codes and what the stuff in HTTP::Message and HTTP::Response is all about.

Replies are listed 'Best First'.
Re^4: New Bing Search Api (5)
by Anonymous Monk on Nov 21, 2016 at 18:17 UTC

    Okay. I get an error message. New lesson for me. The error seems to point to my suspect. I am not passing correctly the parameters...

    HTTP/1.1 401 Access Denied Date: Mon, 21 Nov 2016 18:16:11 GMT WWW-Authenticate: AzureApiManagementKey realm="https://api.cognitive.m +icrosoft.com/bing/v5.0",name="Ocp-Apim-Subscription-Key",type="header +" Content-Length: 152 Content-Type: application/json Apim-Request-Id: a4599b0f-4402-46cd-9f3d-2d1e0f1f0199 Client-Date: Mon, 21 Nov 2016 18:16:12 GMT Client-Peer: 52.174.60.141:443 Client-Response-Num: 1 Client-SSL-Cert-Issuer: /C=US/ST=Washington/L=Redmond/O=Microsoft Corp +oration/OU=Microsoft IT/CN=Microsoft IT SSL SHA2 Client-SSL-Cert-Subject: /CN=api.cognitive.microsoft.com Client-SSL-Cipher: ECDHE-RSA-AES256-SHA384 Client-SSL-Socket-Class: IO::Socket::SSL Client-Warning: Unsupported authentication scheme 'azureapimanagementk +ey' Strict-Transport-Security: max-age=31536000; includeSubDomains; preloa +d { "statusCode": 401, "message": "Access denied due to missing subscrip +tion key. Make sure to include subscription key when making requests +to an API." }

      Maybe now is a good moment to revisit the Microsoft documentation you already linked and my first reply, both of which mention Ocp-Apim-Subscription-Key, which is missing from all your code. Note that the WWW-Authenticate header you get back also shows that header name.

      Most likely the correct approach is to add a header with that name and your secret key as the value.

        Thanks again for pointing me to the right direction. Adding $req->header('Ocp-Apim-Subscription-Key'=>$BingKey); brings me a bit further. Still something is wrong and the error message is a bit obscure to me.

        Connecting to Bing for: https://api.cognitive.microsoft.com/bing/v5.0/ +search?Hello HTTP/1.1 400 Bad Request Cache-Control: private, max-age=0 Date: Mon, 21 Nov 2016 18:39:19 GMT Vary: Accept-Encoding Content-Length: 138 Content-Type: application/json; charset=utf-8 Expires: Mon, 21 Nov 2016 18:38:19 GMT Apim-Request-Id: d3e4c0aa-1a8f-45f4-b3ad-f850296d1651 BingAPIs-Market: de-DE BingAPIs-TraceId: 726DF5B30CE34AF9BBF48A5584E5068C Client-Date: Mon, 21 Nov 2016 18:39:20 GMT Client-Peer: 52.174.60.141:443 Client-Response-Num: 1 Client-SSL-Cert-Issuer: /C=US/ST=Washington/L=Redmond/O=Microsoft Corp +oration/OU=Microsoft IT/CN=Microsoft IT SSL SHA2 Client-SSL-Cert-Subject: /CN=api.cognitive.microsoft.com Client-SSL-Cipher: ECDHE-RSA-AES256-SHA384 Client-SSL-Socket-Class: IO::Socket::SSL P3P: CP="NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR IND" Strict-Transport-Security: max-age=31536000; includeSubDomains; preloa +d X-MSAPI-UserState: eaa0 X-MSEdge-ClientID: 3266EAB9C91A686D383EE36DC87C69F7 X-MSEdge-Ref: Ref A: 726DF5B30CE34AF9BBF48A5584E5068C Ref B: 0E8655691 +1C74DC2F6EACB35EBB37432 Ref C: Mon Nov 21 10:39:19 2016 PST {"_type": "ErrorResponse", "errors": [{"code": "RequestParameterMissin +g", "message": "Required parameter is missing.", "parameter": "q"}]}