说了这么多,那么首先同意我以Google Discovery RESTful服务为例,给大家演示怎样用最普通的Java代码调用Google Discovery RESTful服务。

引言:

在“怎样用Google APIs和Google的应用系统进行集成(2)”的以下,我列出了当前Google APIs支持的全部的Google APIs。事实上这个表格是我用代码调用Google Discovery RESTFul服务自己主动生成的。详细的步骤和代码例如以下:

(1) 訪问Google Discovery RESTFul的服务:https://www.googleapis.com/discovery/v1/apis 能够获得RESTFul服务返回的结果:通过訪问 JSONtoStringConverter-->readJSONSAsString()

package com.henry.json.gson.googlediscovery;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; public class JSONtoStringConverter {
private String url_path="https://www.googleapis.com/discovery/v1/apis";
public String readJSONSAsString(){
InputStream in=this.getJSONSchemaInputStream();
return readJSONSAsString(in);
}
private InputStream getJSONSchemaInputStream() {
InputStream ipStream = null;
if (url_path == null) {
throw new IllegalArgumentException("The URL Path can't be empty!!!");
}
try {
URL url = new URL(url_path);
HttpURLConnection httpConnection = (HttpURLConnection) url
.openConnection();
httpConnection.setRequestMethod("GET");
httpConnection.setReadTimeout(30000);
httpConnection.setDoInput(true);
ipStream = httpConnection.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ipStream;
}
private String readJSONSAsString(InputStream in){
String jsonString="";
ByteArrayOutputStream baosArrayOutputStream=new ByteArrayOutputStream();
byte[] bytes=new byte[1024];
int len=0;
try {
while((len=in.read(bytes))!=-1){
baosArrayOutputStream.write(bytes, 0, len);
}
jsonString=new String(baosArrayOutputStream.toByteArray(),"utf-8");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(jsonString);
return jsonString;
}
public static void main(String[] args) {
JSONtoStringConverter jSONtoStringConverter=new JSONtoStringConverter();
jSONtoStringConverter.readJSONSAsString(); } }

(2) 解析返回的JSON数据,可是解析曾经,我们须要建立对应的JavaBean,这样就能把JSON的对象和Java的对象映射起来。

2.1 GoogleDiscoveryBean

package com.henry.json.gson.googlediscovery;

import java.util.List;

public class GoogleDiscoveryBean {
private String kind;
private String discoveryVersion;
private List<Items> items; public String getKind() {
return kind;
} public void setKind(String kind) {
this.kind = kind;
} public String getDiscoveryVersion() {
return discoveryVersion;
} public void setDiscoveryVersion(String discoveryVersion) {
this.discoveryVersion = discoveryVersion;
} public List<Items> getItems() {
return items;
} public void setItems(List<Items> items) {
this.items = items;
}
@Override
public String toString(){
return kind+"--"+discoveryVersion+"--size:"+items.size();
}
}

2.2  Items

package com.henry.json.gson.googlediscovery;
/*
"kind": "discovery#directoryItem",
"id": "adexchangebuyer:v1",
"name": "adexchangebuyer",
"version": "v1",
"title": "Ad Exchange Buyer API",
"description": "Lets you manage your Ad Exchange Buyer account.",
"discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1/rest",
"discoveryLink": "./apis/adexchangebuyer/v1/rest",
"icons": {
"x16": "http://www.google.com/images/icons/product/doubleclick-16.gif",
"x32": "http://www.google.com/images/icons/product/doubleclick-32.gif"
},
"documentationLink": "https://developers.google.com/ad-exchange/buyer-rest",
"preferred": false
*/
public class Items {
private String kind;
private String id;
private String name;
private String version;
private String title;
private String description;
private String discoveryRestUrl;
private String discoveryLink;
private String documentationLink;
private String preferred;
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDiscoveryRestUrl() {
return discoveryRestUrl;
}
public void setDiscoveryRestUrl(String discoveryRestUrl) {
this.discoveryRestUrl = discoveryRestUrl;
}
public String getDiscoveryLink() {
return discoveryLink;
}
public void setDiscoveryLink(String discoveryLink) {
this.discoveryLink = discoveryLink;
}
public String getDocumentationLink() {
return documentationLink;
}
public void setDocumentationLink(String documentationLink) {
this.documentationLink = documentationLink;
}
public String getPreferred() {
return preferred;
}
public void setPreferred(String preferred) {
this.preferred = preferred;
} }

(3) 下载JSON java的库: http://code.google.com/p/google-gson/  

GSon是谷歌官方提供的解析JSON数据:

1.谷歌GSON这个Java类库能够把Java对象转换成JSON,也能够把JSON字符串转换成一个相等的Java对象。

2.Gson支持随意复杂Java对象包含没有源码的对象。

(4) 创建一个GoogleGSonTools: 这个类会把Google Discovery RESTful服务返回的JSON的字符串,自己主动转换成GoogleDiscoveryBean对象,这种方法不到10行,就这么简单。

package com.henry.json.gson.googlediscovery;

import com.google.gson.Gson;

public class GoogleGSonTools {
public static <T> T getGoogleDiscoveryBean(String josnString, Class<T> clazz) {
T t = null;
try {
Gson gson = new Gson();
t = gson.fromJson(josnString, clazz);
} catch (Exception e) {
}
return t;
}
}

(5)结合上面的(1)~(4),我们把其返回的值,格式化成一个HTML的表格。

package com.henry.json.gson.googlediscovery;

import java.util.List;

public class GoogleAPIsListViewService {

	public String listAllGoogleAPIs(){
StringBuilder sbBuilder=new StringBuilder("<table border=\"1\" style=\"word-break:break-all; word-wrap:break-word;\"> <tr><td>序号</td><td>API 标题</td><td>名字</td><td>版本号</td><td>RestFul请求的URL</td><td>RestFul请求的URL</td></tr>");
JSONtoStringConverter jSONtoStringConverter=new JSONtoStringConverter();
String json=jSONtoStringConverter.readJSONSAsString();
GoogleDiscoveryBean googleDiscoveryBean=GoogleGSonTools.getGoogleDiscoveryBean(json, GoogleDiscoveryBean.class);
List<Items> listItems=googleDiscoveryBean.getItems();
if(listItems!=null&&listItems.size()>0){
for(int i=0;i<listItems.size();i++){
Items items=listItems.get(i);
sbBuilder.append("<tr>");
sbBuilder.append("<td>").append(" "+(i+1)+" ").append("</td>");
sbBuilder.append("<td>").append(items.getTitle()).append("</td>");
sbBuilder.append("<td>").append(items.getName()).append("</td>");
sbBuilder.append("<td>").append(items.getVersion()).append("</td>");
sbBuilder.append("<td>").append(items.getDiscoveryRestUrl()).append("</td>");
sbBuilder.append("<td>").append(items.getDocumentationLink()).append("</td>");
sbBuilder.append("</tr>");
}
}
sbBuilder.append("</table>");
System.out.println(sbBuilder.toString());
return sbBuilder.toString();
}
public static void main(String[] args) {
GoogleAPIsListViewService gavs=new GoogleAPIsListViewService();
gavs.listAllGoogleAPIs();
} }

输出的结果就是: “怎样用Google APIs和Google的应用系统进行集成(2)”一文中看到的表格的html源码。

怎样用Google APIs和Google的应用系统进行集成(3)----调用Google 发现(Discovery)API的RESTful服务的更多相关文章

  1. 谷歌正式发布Google APIs Client Library for .NET

    好消息,特大好消息! 英文原文:Google API library for .NET paves the way for Google services on Windows phone 本月 17 ...

  2. 怎样用Google APIs和Google的应用系统进行集成(4)----获得Access Token以通过一些Google APIs的OAuth2认证

    在上篇文章中: "怎样用Google APIs和Google的应用系统进行集成(3)----调用发现Google APIs的RESTful的服务"一文中,我们直接用jdk的java ...

  3. Android SDK Manager Google Apis 下载

    本意是想利用google的gcm来实装android推送功能的,很遗憾, google貌似已经停止提供啥服务给国内了,或者说国内想继续使用google 服务暂时变得几乎不可能了.找了个代理来进行goo ...

  4. 怎样用Google APIs和Google的应用系统进行集成(1)----Google APIs简介

    Google的应用系统提供了非常多的应用,比方 Google广告.Google 任务,Google 日历.Google blogger,Google Plus,Google 地图等等非常的多的应用,请 ...

  5. 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解

    笔者电话Google Calendar APIs的GetColors方法,其中(有关详细信息Google Calendar API已经Google API看到我的博文介绍的其余部分,目前,我们只取Go ...

  6. 怎样用Google APIs和Google的应用系统进行集成(2)----Google APIs的全部的RESTFul服务一览

    上篇文章,我提到了,Google APIs暴露了86种不同种类和版本号的API.我们能够通过在浏览器里面输入https://www.googleapis.com/discovery/v1/apis这个 ...

  7. gRPC版本的 Google APIs

    gRPC将是未来google所有客户端的库标准(DevoxxFR), 这句话的出处: https://twitter.com/chanezon/status/585724143003402240    ...

  8. Google Inc.:Google APIs:23' 解决方案

    在导入一个项目是,出现 Unable to resolve target 'Google Inc.:Google APIs:6'第一种解决方法: compileSdkVersion 23 改成 com ...

  9. 怎样用Google APIs和Google的应用系统进行集成(8)----怎样把Google Blogger(博客)的JSON Schema转换成XML的Schema(XSD)?

    在Google RESTFul API中,Google Blogger API(Google博客API)应该和我们的生活离得近期:由于差点儿非常多人每天都在看博客,都在写博客,都听说过博客.在前面的G ...

随机推荐

  1. android handler机制简单介绍

    我们需要了解4个类: handler:处理者,用于发送和接收信息 massage:消息.里面可以存储消息的许多信息 looper:循环泵,用于循环取出消息队列中的消息 MessageQueue(一般不 ...

  2. Oracle11G安装

    1.安装Oracle 记住要设置好密码 不要忘了 解锁scott(注意一定要解锁)账户, 去掉前面的绿色小勾,输入密码.同样可以输入平常用的短小的密码,不必非得按oracle建议的8位以上大小写加数字 ...

  3. iOS开发知识点:理解assign,copy,retain变strong

    一..h和.m文件的变化说明 1.对于.h头文件,主要是将属性定义由retain变为strong @property (retain, nonatomic) 变为 @property (strong, ...

  4. cocos2d-x 实现沙子特效

    效果图. 说明. 标题取的不好, 原因是我也不知道这效果应该叫什么. 大概效果是这样的, 随着鼠标按下并且移动, 所到之处所有磁铁都将扩散. 就好比鼠标是一个圆形区域去排挤在场的磁铁. 话不多说, 直 ...

  5. N3292x IBR介绍

    N3292x IBR介绍 1 IBR启动流程 图1-1 IBR启动流程 CHIP_CFG[0] Mode 0 Boot from IBR Recovery Mode with crystal inpu ...

  6. 激活office 2013

    1.下载office 2013激活工具:microsoft toolkit 2.解压文件,运行Microsoft Toolkit.exe,选择office,即箭头标识处

  7. php中json_decode()和json_encode()

    1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...

  8. nginx反向代理取得IP地址

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  9. 浅谈MIPS地址对齐问题

    1.什么叫地址对齐? RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐. 2.计算机主要的架构分哪两类?及其地址对齐在两者的区别? 计算机主 ...

  10. 转:前端集锦:十款精心挑选的在线 CSS3 代码生成工具

    今天这篇文章向大家推荐十款非常有用的在线 CSS3 代码生成工具,这些工具能够帮助你方便的生成 CSS3 特效.CSS3 是对 CSS 规范的改善和增强,增加了圆角.旋转.阴影.渐变和动画等众多强大的 ...