How to make HTTPS requests with serverside javascript using Worklight?

Viewed 2990

I'm toying around with IBM worklight, and am trying to create an adapter to feed some data in from the Google places API.

I want to call this URL :

https://maps.googleapis.com/maps/api/place/search/json?key=AIzaSyCTlPms1pvhzeoRrBao5qW-DJMI_CWcbAM&location=52.0700,1.1400&radius=10000&sensor=false&name=coffee

Executing this URL works fine in a browser, and displays some nice JSON that I'm trying to obtain via Worklight.

The Worklight adapters are created in Javascript, this is what I have so far :

function getCoffeeHouses() {

    var input = {
        method : 'get',
        returnedContentType : 'json',
        path : 'maps/api/place/search/json',
        parameters : {
            'key'       :   'AIzaSyCTlPms1pvhzeoRrBao5qW-DJMI_CWcbAM',
            'location'  :   '52.0700,1.1400',
            'radius'    :   '10000',
            'sensor'    :   'false',
            'name'      :   'coffee' 
        }
    };

    var response = WL.Server.invokeHttp(input);

 // Extract latitude and longitude from the response.
    var type = typeof response; 
    if ("object" == type) {
        if (true == response["isSuccessful"]) {
            // Return JSON object with lat and lng.
            return response["results"];
        } 
        else {
            // Returning null. Web request was not successful.
            return null;
        }
    } 
    else {
        // Returning null. Response is not an object.
        return null;
    }
}

And this is the result that I get in the console, when I test the above:

Failed to parse JSON string
<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 404 (Not Found)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}
  </style>
  <a href=//www.google.com/><img src=//www.google.com/images/errors/logo_sm.gif alt=Google></a>
  <p><b>404.</b> <ins>That’s an error.</ins>
  <p>The requested URL <code>/maps/api/place/search/json?key=AIzaSyCTlPms1pvhzeoRrBao5qW-DJMI_CWcbAM&amp;location=52.0700%2C1.1400&amp;radius=10000&amp;sensor=false&amp;name=coffee</code> was not found on this server.  <ins>That’s all we know.</ins>
Caused by: java.io.IOException: Unexpected character '<' on line 1, column 1
[2012-07-23 11:08:57] An error occurred while invoking procedure CoffeeFinder/getCoffeeHouses parameters: {
   "arr": [
   ]
}
null
Caused by: null

I think, that this is probably caused because the adapter is requesting as HTTP, whereas it should be using HTTPS.

If I alter the request to use HTTP in a browser, it displays similar results.

Question : Can I make an HTTPS request by altering the above Javascript, or am I misunderstanding worklight adapters?

2 Answers
Related