Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member

简介

SAP HANA XSSPS06开始引入了XSJS outbound connectivity这个非常有用的特性。通过XSJS outbound connectivity,我们可以在SAP HANA原生应用中发起HTTP/HTTPS请求去获取外部资源。这个特性使得SAP HANA和社交媒体的连接变成了可能,而且十分方便,我们可以从社交媒体上做很多有趣的分析。那么在本文中,笔者将向大家展示如何使用XSJS outbound connectivity搜索微博。


笔者去年去美国出了一次差,那是第一次去美国,周末闲得无聊想去电影院看一场电影,一时兴起用SAP HANA做了一个电影应用,然后用这个应用选了一部电影去看。这个应用的大致思路是从Twitter上爬取评价电影的微博,将其插入SAP HANA,然后使用SAP HANA自带的文本分析功能来分析情感,进而进行评分。但是,去年那个时候SAP HANA还是SPS05版本,还没有XSJS outbound connectivity功能,笔者只能用Twitter4J来连接Twitter API。要是那个时候有这个功能该多好啊!没关系,现在用这个功能来搜索微博还为时不晚,那就让我们开始吧!本文将使用Twitter作为例子,对于国内的读者来说需要先翻墙。。。


准备工作

  1. 一个SAP HANA,至少SPS06版本,本文使用SAP HANA SPS08 Rev. 80
  2. 一个Twitter账号


步骤

1.调查Twitter API

在第一步中,我们需要调查搜索微博需要使用哪个API,然后就是怎么和Twitter API交互,认证啦,授权啦这些事情。首先你可以从这里找到所有Rest API,我们想搜索微博,所以我们可以使用这个API,所有的信息都罗列的非常详细了,包括URL,参数和例子。

那么我们该如何调用这个API呢?可以从这里找到答案。因为我们只是搜索微博,所以我们可以使用Application-only authentication。从这个文档里面有一个包含三个步骤非常详细的例子,这恰恰就是我们所需要的。这里有一点需要注意,需要使用HTTPS来调用API v1.1,你可以从这里找到该信息。

2.使用Postman来模拟调用API

在第一步中,我们已经知道了如何调用Twitter API,我们可以先用Postman来测试一下。当然有很多和Postman类似的工具,你可以自由选择。所有步骤在这里已经详细描述,笔者在这里只是用一些截图总结一下。

a. 编码API key和API secret

首先如果你没有应用的话,你需要先创建一个应用。创建完应用,你可以在“API Keys”这个标签下找到应用的<API key>和<API secret>。笔者已经重新生成了API key和API secret,所以下图的API key和API secret已经作废。

然后将<API key>:<API secret>编码成Base64格式。你可以使用Base64 Decode and Encode - Online来完成。

b. 获取bearer token

你需要先退出Twitter账号,要不然会报错"403 Forbidden: The server understood the request, but is refusing to fulfill it.",下图的bearer token已经失效。

c. 用该bearer token测试GET search/tweets | Twitter Developers

测试成功,我们搜索带有#SAPHANA的微博,得到了如下结果。简单起见,我们只使用q这个参数。

3.设置SAP HANA使用HTTPS

截止到目前,我们已经成功使用Postman搜索了微博。为什么不用XSJS outbound connectivity来完成相同的事情呢?让我们开始吧!由于从API v1.1开始必须使用HTTPS,我们需要做的第一件事情就是让SAP HANA支持HTTPS访问,但是默认是不行的,我们需要进行配置。你可以参照这篇文章来完成该步。当你完成了该步,你应该可以做如下两件事情,如果不能说明没有配置成功。

a. 可以成功访问https://<hostname or IP>:43<instance number>/sap/hana/xs/admin/

b. 当你切换至“Trust Manager”标签页,没有“No valid SAP crypto configuration”错误。

4.创建Twitter APItrust store

在该步骤中,我们需要创建Twitter API的trust store。同样,你可以参照这篇文章来完成该步。你只需要修改一个地方,就是把https://api.github.com/换成https://api.twitter.com/

5.使用XSJS outbound connectivity搜索微博

我们终于到了这步。因为我们在前面几步已经完成了相当多的准备工作,这一步对我们来说就简单许多。我们只需要完成以下步骤即可,笔者是在SAP HANA Stuido里面完成的,当然读者也可以在Web IDE里面完成。项目结构如下图所示:

a. 创建XS项目

b. 创建.xsapp, .xsaccess和services目录

c. 创建twitterApi.xshttpdest,编辑,保存,激活

description = "twitter api";

host = "api.twitter.com";

port = 443;

pathPrefix = "/1.1";

useProxy = true;

proxyHost = "proxy.pal.sap.corp";

proxyPort = 8080;

authType = none;

useSSL = true;

timeout = 0;

d. 在下图红框里面编辑trust store,保存

e. 创建search.xsjs,编辑。从Application-only authentication | Twitter Developers,我们可以得知bearer token除非被注销,要么对于应用来说是一直有效的,所以我们不必每次都去获取bearer token,我们可以直接在代码里使用bearer token。

var destination = $.net.http.readDestination("searchTweets.services", "twitterApi");

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

var request = new $.net.http.Request($.net.http.GET, "/search/tweets.json?q=%23SAPHANA");

request.headers.set('Authorization', 'Bearer AAAAAAAAAAAAAAAAAAAAADa7RAAAAAAAUhLkOYDVULCmK2KnNlce6dURp7Y%3Dp1ERxtaQ0IdJMAi1EdZLjT4GDt1ketu1DzzPjNqHTk');

var response = client.request(request, destination).getResponse();

$.response.status = response.status;

$.response.contentType = response.contentType;

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

f. 保存,激活所有文件

6.测试

现在我们就可以来测试XSJS outbound connectivity了。测试成功,发现有一条微博是“The only limitation is our imagination!”,是笔者很欣赏的一句话。




总结

在本文中,我们成功使用XSJS outbound connectivity来搜索微博。但是,我们并没有将搜索到的记录插入SAP HANA,当然这个是完全可以做到的。除此之外,我们还可以用XSJS outbound connectivity来调用其他Twitter API




想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!

转载本文章请注明作者和出处http://scn.sap.com/community/chinese/hana/blog/2014/12/02/%E4%BD%BF%E7%94%A8sap-hana-xs%E6%90%9C%E7%...,请勿用于任何商业用途。

1 Comment