Skip to Content
Author's profile photo Former Member

使用SAP HANA XS搜索微博

简介

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已经作废。

1.PNG

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

2.PNG

b. 获取bearer token

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

3.PNG

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

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

4.PNG

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.PNG

5.使用XSJS outbound connectivity搜索微博

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

6.PNG

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,保存

7.PNG

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!”,是笔者很欣赏的一句话。


8.PNG


总结

在本文中,我们成功使用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%B4%A2%E5%BE%AE%E5%8D…,请勿用于任何商业用途。

Assigned Tags

      1 Comment
      You must be Logged on to comment or reply to a post.
      Author's profile photo Meng Yuxin
      Meng Yuxin

      认真看完,但没环境/没翻墙...( 🙁 )