作者:穿行印象
http://blog.sina.com.cn/s/blog_7a9486880101q63g.html
SMP3.0中的Application,一方面需要连接后端系统,例如SAP Netweaver Gateway,另一方面需要定义外部应用访问该Application的认证方式。
设想有一个旅游代理公司,它需要开发一个移动应用,让其客户通过该移动应用在任何时候、任何地点方便的预定机票。SMP就提供了这样的能力,使得移动终端能够方便、高效、安全的访问SAP Netweaver Gateway暴露出来的OData REST Webservice。在移动终端通过SMP访问后端的数据时,它还需要能够对用户进行鉴权,SMP就提供了诸如MAF(Mobile Application Framework)的组件,能够使开发人员快速的把登录鉴权功能集成到移动应用中去。
为了实现这样的功能,第一步我需要在SMP中创建一个Application,用以访问后端Netweaver Gateway的业务数据,同时定义其认证策略。
在SMP管理界面中,点击”New”可以发起创建一个新的Application:
如下图所示,我们需要填写Application需要的信息:
ID: com.sap.flight
Name: SFlight OData SDK sample application
Vendor: SAP
Type: Native
点击Save后的信息如下图所示:
其中,
endpoint: http://sapes1.sapdevcenter.com:8080/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT
之后需要定义一个新的Aughentication Profile,如下图所示,Provider我们选择:HTTP/HTTPS Authentication。
新的Profile的URL与上面的endpoint相同,也是
http://sapes1.sapdevcenter.com:8080/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT
这样就新创建了一个Application,在Application列表中可以看得到该Applicaiton。可以选中该Application,然后通过ping进行测试,看是否能够ping通:
一切顺利的话,该Application就配置完成里了,可以为上层Mobile Application提供服务了。由于通过SMP暴露给上层Mobile Application的也是OData服务,所以没有Mobile Application之前可以通过Google的Postman进行测试。
测试的第一步就是需要连接到该Application提供的服务,我们使用HTTP的POST方法进行注册,获取一个AppID:
如下图所示,URL是如下(192.168.174.129是SMP的IP地址):
http://192.168.174.129:8080/odata/applications/latest/com.sap.flight/Connections
operation type: post
Body的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<entry
xmlns="http://www.w3.org/2005/Atom"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
<category term="applications.Connection"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<content type="application/xml">
<m:properties></m:properties>
</content>
</entry>
需要注意的是需要在header中指定content-type:application/xml。点击send后就会得到201 created的返回,在返回的结果中,我们会拿到一个ApplicationConnectionID,在后续就使用该APPCID来对SMP暴露的OData服务进行操作。
一旦创建成功连接,在SMP管理界面中的Registrations列表中就会看到一个新建的连接。再次使用Postman对该连接进行操作。Operation type选择GET,在Header中填写用户名和口令以及X-SMP-APPCID,我们就可以得到如下的返回结果,显示该服务中的能够使用的数据集:
一切顺利,我们新建了一个SMP的Application代理了后端的业务数据,并且定义了鉴权方式。下面我们使用SMP Native SDK来访问这些数据。