Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Calling http service not working

I am trying to connect to outbound service and I get this error:

{"ERROR":"HttpClient.request: request failed. The following error occured: unable to establish connection to http://api.openweathermap.org:80 - internal error code: connection failed"}

I tried several variants but it does not work.

Service url:

http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=bd82977b86bf27fb59a04b61b657fb6f

.xshttpdest file:

host = "http://api.openweathermap.org";

port = 80;

description = "Weather";

useSSL = false;

pathPrefix = "data/2.5";

authType = none;

useProxy = false;

proxyHost = "";

proxyPort = 0;

timeout = 0;

.xsjs file:

    var destination;

    var client;

    var request;

    //Read the input employee number which is to be read

 

    try{

        //Reading the destination properties

        destination = $.net.http.readDestination("s0015145715trial.development.machines.services","gate");

     

          //Creating HTTP Client

          client = new $.net.http.Client();

       

          //Creating Request

          request = new $.web.WebRequest($.net.http.GET,"weather?q=London,uk&appid=bd82977b86bf27fb59a04b61b657fb6f");

          client.request(request,destination);

        

          //Getting the response body and setting as output data

          $.response.setBody(client.getResponse().body.asString());

    }

    catch(errorObj){

      $.response.setBody(JSON.stringify({

      ERROR : errorObj.message

      }));

    }

Tags:
Former Member
replied

Hello Matej,

you have to adjust following points in your files.

.xshttpdest:

  • host = "api.openweathermap.org"; -> "http://" removed
  • pathPrefix = "/data/2.5" -> "/" added at the beginning
  • Proxy settings (due to your package name with your s-user trial ID I assume you are on the HCP HANA trial instance, for that use following values):
    • useProxy = true;
    • proxyHost = "proxy-trial";
    • proxyPort = 8080;

.xsjs:

  • Add a "/" at the beginning of the path you are transferring to the constructor of the WebRequest -> new $.web.WebRequest($.net.http.GET,"/weather?q=London,uk&appid=bd82977b86bf27fb59a04b61b657fb6f")
  • Instead of $.web.WebRequest you should also use $.net.http.Request.

Best Regards,

Florian

0 View this answer in context
Not what you were looking for? View more on this topic or Ask a question