SMP3.0学习笔记之十九 使用REST API在任何操作系统上消费SMP的OData服务

本文主要是介绍SMP3.0学习笔记之十九 使用REST API在任何操作系统上消费SMP的OData服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 作者:穿行印象

http://blog.sina.com.cn/s/blog_7a9486880101qsqh.html


SMP3.0自带的OData Native API以及Kapsel Plugin只能够在iOS和Anrdoid上可以使用。如果想在其他移动操作系统上,例如Windows Phone上开发基于SMP的移动应用,如何访问到SMP的REST(OData)服务呢?这就需要使用SMP自带的REST API。
     所谓的REST API其实就是SMP提供的一系列的基于HTTP POST/GET/PUT/DELETe等操作的规范,按照REST API的语法规范,就可以在任何移动终端上消费SMP3.0的REST服务了,从而开发出不依赖于OData Native API或者Kapsel Plugin的HTTP应用。
     在之前的示例中,其实已经使用到了很多REST API,例如使用Google Postman的HTTP POST方法创建一个SMP3.0 Application并获取APPCID。获取到APPCID之后在HEADER中加入该APPCID就可以对SMP暴露的OData服务进行操作,例如使用HTTP GET读取数据,使用HTTP POST修改数据,使用HTTP PUT更新数据,使用HTTP DELETE删除数据,另外还可以使用REST API对SMP Application进行配置。使用REST API的几个例子:

1. 使用REST API Logon:其实是使用HTTP的POST方法进行注册,获取一个AppCID:
如下图所示,URL是如下(192.168.174.129是SMP的IP地址):
http://192.168.174.129:8080/odata/applications/latest/com.sap.flight/Connections

operation type: post

Body的内容如下:


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">

scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>






返回结果:



     在返回的结果中,我们会拿到一个ApplicationConnectionID,在后续就使用该APPCID来对SMP暴露的OData服务进行操作。

 

使用REST API的HTTP GET获取OData数据
     再次使用Postman对该连接进行操作。Operation type选择GET,在Header中填写用户名和口令以及X-SMP-APPCID,我们就可以得到如下的返回结果,显示该服务中的能够使用的数据集:

使用HTTP GET获取的数据如下:



使用REST API向移动设备发送消息

例如,使用Postman通过SMP向Android客户端发送消息:
URL:
http://localhost:8080/Notification/490aeb6b-ddb0-46b4-8655-973c616009a4
490aeb6b-ddb0-46b4-8655-973c616009a4是移动设备登录SMP3.0之后的application ID。
使用POST方法。Header中增加X-SMP-GCM-DATA:
{"dispmsg":"Hello GCM Message!","appid":"com.sap.flight.kapsel","appname":"com.sap.flight.kapsel","reasonurl":"http://www.sap.com","reasoncode":12345}


     总之,使用REST API可以使开发人员能够在任何的操作系统上使用HTTP操作获取SMP3.0暴露的REST(OData)服务。

这篇关于SMP3.0学习笔记之十九 使用REST API在任何操作系统上消费SMP的OData服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668739

相关文章

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方