马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
简介SAP HANA XS从SPS06开始引入了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作为例子,对于国内的读者来说需要先翻墙。。。
准备工作- 一个SAP HANA,至少SPS06版本,本文使用SAP HANA SPS08 Rev. 80
- 一个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 API的trust store 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。
|