WO+能力共享平台(http://open.wo.com.cn)是中国联通推出的开放平台。拥有的丰富电信能力资源以及深度整合挖掘的第三方能力资源等。WO+平台提供的API均为简洁优雅的RESTful风格,极大的方便了开发人员的使用。

上段为废话。如今言归正传。我会用一个简单的演示样例来说明WO+平台的API是怎样地简单,怎样地好用。

本文代码请參见:https://github.com/sharetop/WoPlus_Java_SDK

A:确认流程

以调用量最大的『计费能力2.0』为例。先来看看流程。

从用户操作层面来看,小额计费分两步。第一步。输入手机号获取验证码,第二步,输入验证码,确认支付。

相应WO+平台。我们须要两个API:发送支付验证码和按次支付接口。

B:研读文档

然后,我们须要对接口进行研读。以第一个API为例。发送支付验证码。

依据文档(http://open.wo.com.cn/aep/consumerCapDetail.html?apiPackageId=00000000-0000-0000-0000-500000801000)的描写叙述。能够看出,它是一个POST请求,HTTP头要声明一下ContentType和Accept。这个非常Easy。主要是那个Authorization有点不一样了,这是一个签权字段,里面须要填写一个appKey和token,appKey是在WO+平台创建应用之后得到的应用标识,而token则须要依据appKey和appSecret来获取(涉及还有一个接口)。

消息体。就更简单了。我们须要将一个Map弄成一个JSON字串,作为StringEntity发出去,就OK。

所以。我们想到的最简单的方案就是。用HttpClient来封装调用逻辑。

C:编写代码

方案确定了,代码就来了。參见演示样例project中的WoPlusClient中的postJSONEntity方法。

static synchronized WoPlusResponse postJSONEntity(String api_url,HashMap<String,String> auth,HashMap<String,Object> params)
throws Exception
{
//将消息体參数转成字符串。JSON格式
String body=JSON.toJSONString(params,SerializerFeature.WriteNullNumberAsZero);
//我们用StringEntity来包装请求
StringEntity entity = new StringEntity(body, "utf-8"); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost(api_url);
//相应文档中对请求HTTP头的要求
httppost.addHeader("Content-Type", "application/json;charset=UTF-8");
httppost.addHeader("Accept","application/json"); StringBuilder sb=new StringBuilder();
for(String k : auth.keySet()){
sb.append(",")
.append(k)
.append("=\"")
.append(auth.get(k))
.append("\"");
} try{
//再添加那个Authorization字段
httppost.addHeader("Authorization",sb.toString().substring(1)); httppost.setEntity(entity);
logger.debug(EntityUtils.toString(entity)); CloseableHttpResponse response = httpclient.execute(httppost);
try{
HttpEntity respEntity = response.getEntity();
if (respEntity != null) {
body = EntityUtils.toString(respEntity);
logger.debug(body);
}
} finally {
response.close();
}
}
finally{
httpclient.close();
} return _transObject(JSON.parseObject(body)); }

三个參数。第一个是请求的URL。即文档中的请求URI,第二个是Authorization串中的两个字段。appKey和token。第三个就是请求的消息体了。相同用Map封装。

appKey和token须要组装成一个字符串,作为Authorization的值。

消息体用Map封装,借助JSON工具能够方便地输出为String类型。

是不是非常easy?

至于第二个API。举一反三就可以!

WO+开放平台:API调用开发手记(话费计费接口2.0)的更多相关文章

  1. 微信开放平台--》网站应用开发 微信登录网站接口(https://open.weixin.qq.com/)

    地址:https://open.weixin.qq.com/ 手册:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&am ...

  2. 百度AI开放平台- API实战调用

    百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...

  3. Java对接拼多多开放平台API(加密上云等全流程)

    前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...

  4. 微信开放平台API开发资料

    微信大概两年前开启了微信公众平台的API供开发者使用,从账号登陆.消息发送.用户账号管理.公众号菜单.客服接口.微信商店接口.用户卡券接口 以及微信支付接口.可以说是全方面覆盖了电商所需要的要素,与阿 ...

  5. Android—基于微信开放平台v3SDK,开发微信支付填坑。

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...

  6. Navi.Soft30.开放平台.腾讯.开发手册

    1系统简介 1.1功能简述 现在是一个信息时代,并且正在高速发展.以前获取信息的途径非常少,可能只有电视台,收音机等有限的来源,而现在的途径数不胜数,如:QQ,微信,官方网站,个人网站等等 本开发手册 ...

  7. 各开放平台API接口通用 SDK 前言

    最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,包括自己刚开始做API接口调用的相关工作时,也是比较抓狂的,所有写一序列文章把之前的工 ...

  8. 各开放平台API接口通用SDK序列文章 前言

    最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,要看的文档一大堆,自己要调用的接口找不着,或都找着了不知道怎么去调用,记得包括自己刚开 ...

  9. 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序

    我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变为现实. 自然语言对话即你的APP或者你制作的工具.机器人等能够对用户输入 ...

随机推荐

  1. java复习整理(六 异常处理)

    一.异常简介  在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性.        ...

  2. template.js 模板引擎

    例子: html代码: <div id="box"></div> css代码: table{ border-collapse: collapse; text ...

  3. java合并两个有序数组的算法(抛砖引玉)

    前几天看见一道面试题中要将两个有序数组合并成一个新的有序数组,首先使用了嵌套循环,之后想那样效率太低,又想出了以下思路,和大家分享下,如果有更好的方法,请留言指教: 思路: 1.新建一个数组大小为fi ...

  4. Linux Mint---安装docky

    这个安装的时候没啥难度,直接在软件中心安装一下就可以了,效果很赞的,linux下最棒的dock, 简洁大方,效果好! 只不有过一点需要注意,这个东东直接很上拖是添加不上去的 需要从/usr/share ...

  5. cocos2d Programming Guide

    http://python.cocos2d.org/doc/programming_guide/index.html The cocos2d Programming Guide provides in ...

  6. 关闭vs警告

    禁用所有编译器警告 当“解决方案资源管理器”中有项目选中时,在“项目”菜单上单击“属性”. 单击“编译”选项卡. 选中“禁用所有警告”复选框. 禁用单个编译器警告 在“解决方案资源管理器”中选定一个项 ...

  7. 树莓派3b入门教程

    原文地址:传送门 这篇教程将带您一起玩转树莓派3(Raspberry Pi 3).和普通PC一样,拿到新设备第一件事就是要给它安装一个操作系统,并做一些初始化的操作.比PC简单的是,树莓派是一个固定配 ...

  8. [Math Review] Statistics Basic: Estimation

    Two Types of Estimation One of the major applications of statistics is estimating population paramet ...

  9. 同时上传参数及图片到 Web Api

    方法一:利用 FormData JS: function uploadFileAndParam() { var url = "http://localhost:42561/api/uploa ...

  10. java Iterable

    Iterable