`
leochan007
  • 浏览: 19923 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用groovy写阿里软件的api

阅读更多
看了阿里软件开发的指南,想到用强大groovy脚本语言,应该会很简练。
于是自己写了几个简单的函数用于处理与alisoft平台的连接。

不过在开发的过程中,也发现了alisoft定义的接口还有些问题,maybe 我自己的理解有偏差吧。。

比如对于下述定义:

alisoft.getUsingUser 调用参数

    系统级参数

名称 类型 是否必须 描述
sip_appkey string 必须 ISV应用的appkey为软件互联平台分配给ISV应用的唯一编号。
sip_apiname string 必须 服务名。
sip_timestamp string 必须 服务请求时间戳(yyyy-mm-dd hh:mm:ss.xxx),支持毫秒。
sip_sign string 必须  请求签名(包括了对前面三个必选参数和所有业务参数按签名规则做签名)。
sip_sessionid string 可选  在ISV应用中用户会话唯一标识。

   应用级参数

名称 类型 是否必须 描述
appInstanceId string  必须  应用实例ID,一般与应用中的公司ID一一对应


如果仅仅把上述传入后做signature的话,得到的签名是无效的,必须要把所有的参数都传入才可以。

整个库中比较关键的是 alisoftutils这个类的getUrl方法 用以构造请求的url string
def getUrl(String methodName, Map params, String sessionid, String appkey, String appsecret, String base){
def qs = [:]

// system
qs.sip_appkey = appkey
qs.sip_apiname = methodName
qs.sip_timestamp = Constants.SIP_TIMESTAMP_FORMATER.format(new Date())

// application
qs.userId = params.user_id
qs.appInstanceId = params.app_instance_id
qs.token = params.token

//optional
qs.sip_sessionid = sessionid
qs.appId = params.app_id

qs.sip_appsecret = appsecret;
String sip_sign= SignatureUtil.Signature(qs, appsecret);
qs.sip_sign = sip_sign

def urlStr = []

qs.each{ urlStr << it.key + "=" + URLEncoder.encode(it.value,"gbk") }

return new URL(base + urlStr.join("&"))
}

在处理alisoft返回值得时候 我也简化了 没有考虑response的status变量 ,这和alisoft官方提供的jar包处理有区别,anyway,也许我这么处理是有隐患的。

最后demo顺利调试成功,还需要继续完善~ 
分享到:
评论
1 楼 JohnnyJian 2009-07-23  
这3行:
def urlStr = []
qs.each{ urlStr << it.key + "=" + URLEncoder.encode(it.value,"gbk") }
return new URL(base + urlStr.join("&")) 


可以1行搞定:
(base + qs.collect { k, v -> "$k=${encode(v,'gbk')}" }.join("&")).toURL()

相关推荐

    阿里云Oss的简单使用

    在本案例中,我们将探讨如何简单使用阿里云OSS进行文件上传,尤其是针对Android应用的开发。 首先,我们需要在阿里云控制台创建一个OSS bucket。Bucket是OSS中存储对象的基本单元,相当于传统存储中的目录或文件夹...

    Android 阿里oss 存储

    描述中提到官方文档可能存在参数错误,这可能指的是配置项或API使用中的错误。开发者在使用过程中遇到问题,应该查阅最新的官方文档,或者参考社区的修复方案。例如,如果官方SDK中的某个配置参数有误,可能需要通过...

    使用阿里大鱼实现短信功能

    在Java开发中,我们可以利用阿里大鱼的SDK来实现短信的发送,这涉及到API的调用、签名的生成以及JSON数据的处理等多个知识点。下面将详细介绍如何在Java环境中使用阿里大鱼实现短信功能。 首先,你需要在阿里大鱼...

    阿里云发送短信Java代码.zip

    完成这一步后,我们会得到AccessKey ID和AccessKey Secret,这是与阿里云API交互的身份凭证。 接下来,我们要引入阿里云的Java SDK。可以通过Maven或Gradle将依赖添加到项目中。在Maven的`pom.xml`文件中,加入以下...

    接入阿里云短信.zip

    为了帮助开发者快速接入阿里云短信服务,本教程将详细讲解如何使用Springboot和Gradle构建一个简单的短信发送应用。 首先,我们需要在阿里云官方网站上注册账号并创建一个阿里云短信服务实例。在实例页面,可以找到...

    阿里云播放器完善-播放视频url

    在Android应用开发中,集成阿里云点播播放器可以为用户提供高效、流畅的视频播放体验。阿里云播放器(AliVcMediaPlayer)是阿里云推出的一款专业级的媒体播放解决方案,它支持丰富的功能和定制化需求,尤其适用于...

    iaac4j.aliyun:封装阿里云资源编排(ROS)api,同时提供git和http拉取资源编排模板的能力。可快速实现IaaC(基础设施即是代码)

    特性基于阿里云ROS原生API精心制作的高层抽象和封装,做到极致简化,大部分功能一行代码搞定完整实现了所有阿里云原生ROS API的功能增强了阿里云原生ROS API,增加了通过名字对资源栈的操作的能力。对资源编排模板和...

    使用阿里ARouter路由实现模块化开发流程

    如需打开MyActivity,可以这样写: ```java ARouter.getInstance().build("/test/activity").navigation(); ``` 对于服务的注入,可以使用`Provider`注解: ```java @Autowired @Provider("/test/service") ...

    aliyunOSS在Android官方文档中需要的3个jar包

    这是阿里云OSS的SDK(Software Development Kit),提供了与OSS服务交互所需的API。通过这个jar包,开发者可以方便地在Android应用中实现上传、下载、列举、删除等操作。例如,你可以创建一个OSSClient实例,然后...

    QLExpress:QLExpress是用于Java平台的功能强大,轻量级,动态的语言,旨在提高开发人员在不同业务场景中的工作效率

    QLExpress基本语法 一、背景介绍 由阿里的电商业务规则、表达式(布尔组合)、特殊数学...4、安全控制,可以通过设置相关运行参数,预防死循环、高危系统api调用等情况。 5、代码精简,依赖最小,250k的jar包适合所有

    QLExpress是一种功能强大、轻量级、动态的Java平台语言,旨在提高开发人员在不同业务场景中的生产力

    由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 在阿里集团有很强的影响力,同时为了自身不断优化、发扬开源贡献精神...

    把汉字转换成拼音

    - **阿里云**:阿里云提供了汉字转拼音的API服务,可以高效地处理大量数据,适用于商业应用。 - **百度AI开放平台**:百度也提供了类似的服务,可以用于开发智能应用。 3. **自定义实现**: - 对于小规模的项目...

    GaodeMap_forAndroid9.rar

    本文将深入探讨如何使用高德地图API开发一款针对Android系统的定位APP,以"GaodeMap_forAndroid9.rar"为例,介绍相关开发流程和关键知识点。 首先,我们要了解高德地图API。高德地图是阿里巴巴旗下的一款地图服务...

    gradle-7.3.3-bin.rar

    1. **构建脚本**:用Groovy或Kotlin编写,描述项目结构、依赖关系和构建过程。 2. **依赖管理**:Gradle 提供强大的依赖管理系统,自动处理版本冲突和下载库文件。 3. **插件**:扩展Gradle功能的组件,如Java插件、...

    开发相关软件1,包含idea插件列表等

    本资源名为“开发相关软件1”,其中包含了针对IntelliJ IDEA(简称IDEA)的插件列表,这是一款广泛使用的Java集成开发环境,同时也支持多种其他编程语言。IDEA以其强大的功能、智能的代码补全和高度可定制性受到了...

    IDEA中Gradle学习指南.pdf

    - **7.4.7 switch语句**:Groovy中的switch语句支持使用字符串和正则表达式匹配。 - **7.4.8 闭包**:闭包是Groovy的一个强大特性,可以在多个地方复用代码。 - **7.4.9 主方法**:虽然Groovy不是必须定义主方法,但...

    gradle-3.3-all.zip 绿色版本,欢迎下载

    Gradle基于Groovy语言,允许使用简洁、易读的DSL(领域特定语言)来定义构建脚本。这使得构建过程变得灵活且可扩展。与Ant和Maven相比,Gradle更注重性能和灵活性,能够处理复杂的项目结构和依赖关系。 Gradle-3.3 ...

    BaiChuanTest.7z

    阿里百川提供了详尽的API文档和开发者支持,方便开发者快速定位和解决问题。 总结来说,Android集成阿里百川测试Demo是一个学习和实践的过程,涵盖了Android权限管理、服务与广播接收器的使用、SDK初始化与参数设置...

    10.上传提交代码到jcenter1

    在Android开发中,将代码发布到Jcenter是一个重要的步骤,这使得其他开发者可以通过依赖管理工具轻松地引入并使用你的库。本文将详细讲解如何通过Gradle和bintray-plugin将代码上传到Jcenter。 1. **注册账号** ...

    SophixTest.zip

    通过以上步骤,我们可以全面了解阿里云Sophix热修复的集成和使用。这一技术不仅简化了应用维护,也大大提高了开发团队的响应速度,是现代移动应用开发不可或缺的一部分。对于大型应用来说,Sophix热修复更是保障服务...

Global site tag (gtag.js) - Google Analytics