在.xsjs中使用.xshttpdest读取外部API

2020-09-23 05:18发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我的总体目标是从天气API接收数据,并以预定义的时间间隔将其写入HANA表中(在试用环境中)。 因为我以为我可以使用 .xsjs 来处理GET请求,并且如果我遵循此教程我必须创建一个 .xshttpdest 文件。

但是,如果我尝试运行 weather.xsjs ,我总是会收到 500-内部服务器错误。 我认为错误是在第1行中,我尝试提交参数(我无法调试它,因为如果尝试启动调试器,则会收到错误消息)。 这两个文件都在项目Solarhouse中。

这是包装结构:

weather.xsjs

 var dest = $ .net.http.readDestination(" Solarhouse"," weather");

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

 var req = new $ .web.WebRequest($。net.http.GET);
 client.request(req,dest);
 var response = client.getResponse();

 $ .response.contentType =" application/json";
 $ .response.setBody(response);
 

weather.xshttpdest(问题解决后,我将更改天气API密钥)

 host ="samples.openweathermap.org/data/2.5/forecast?q=Dresden≈pid=fe27bc69fea89d0648431cfa53d0fc29";
 端口= 80;
 description ="天气检查器";
 

谢谢

卢卡

(12.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我的总体目标是从天气API接收数据,并以预定义的时间间隔将其写入HANA表中(在试用环境中)。 因为我以为我可以使用 .xsjs 来处理GET请求,并且如果我遵循此教程我必须创建一个 .xshttpdest 文件。

但是,如果我尝试运行 weather.xsjs ,我总是会收到 500-内部服务器错误。 我认为错误是在第1行中,我尝试提交参数(我无法调试它,因为如果尝试启动调试器,则会收到错误消息)。 这两个文件都在项目Solarhouse中。

这是包装结构:

weather.xsjs

 var dest = $ .net.http.readDestination(" Solarhouse"," weather");

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

 var req = new $ .web.WebRequest($。net.http.GET);
 client.request(req,dest);
 var response = client.getResponse();

 $ .response.contentType =" application/json";
 $ .response.setBody(response);
 

weather.xshttpdest(问题解决后,我将更改天气API密钥)

 host ="samples.openweathermap.org/data/2.5/forecast?q=Dresden≈pid=fe27bc69fea89d0648431cfa53d0fc29";
 端口= 80;
 description ="天气检查器";
 

谢谢

卢卡

(12.6 kB)
付费偷看设置
发送
2条回答
天桥码农
1楼 · 2020-09-23 05:55.采纳回答

首先,您应该更正xshttpdest文件(将主机拆分为真实主机+路径前缀;添加缺失值,例如,在试用环境中,至少需要一个代理):

 host =" samples.openweathermap.org";
 端口= 80;
 description ="天气检查器";
 useSSL = false;
 pathPrefix ="/data/2.5";
 authType =无;
 useProxy = true;
 proxyHost ="代理审判";
 proxyPort = 8080;
 超时= 3000;
 

然后调整xsjs,以将服务的路径添加到请求中(已从xshttpdest文件中删除)。 按照一个有效的示例(您必须输入有效的API密钥):

 var api_key ="在这里输入您的API密钥";
 尝试{
     var dest = $ .net.http.readDestination(" Solarhouse","天气");

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

     var req = new $ .net.http.Request($。net.http.GET,"/img/forecast?q =Dresden≈pid=" + api_key);
     client.request(req,dest);
     var response = client.getResponse();

     if(!response.body){
         $ .reponse.contentType ="文本/纯文本";
         $ .reponse.setBody(" no response body");
     }其他{
         $ .response.contentType =" application/json";
         $ .response.setBody(response.body.asString());
     }
 }抓住{e} {
     $ .response.contentType =" application/json";
     $ .response.setBody(JSON.stringify(e));
 }
 

致谢,
弗洛里安

三十六小时_GS
2楼-- · 2020-09-23 05:53

非常感谢! :)

我只需要在&中更改≈,而我第一次提交的参数是错误的。

 var req =新的$ .net.http.Request($。net.http.GET,"/img/forecast?APPID =" + api_key +"&q =" +城市); 

一周热门 更多>