如何用Google APIs和Google的应用系统进行集成(3)----调用Google Discovery RESTful服务

说了这么多,那么首先允许我以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 RESTful服务,布布扣,bubuko.com

时间: 2024-10-01 05:09:28

如何用Google APIs和Google的应用系统进行集成(3)----调用Google Discovery RESTful服务的相关文章

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

说了这么多,那么首先同意我以Google Discovery RESTful服务为例,给大家演示怎样用最普通的Java代码调用Google Discovery RESTful服务. 引言: 在"怎样用Google APIs和Google的应用系统进行集成(2)"的以下,我列出了当前Google APIs支持的全部的Google APIs.事实上这个表格是我用代码调用Google Discovery RESTFul服务自己主动生成的.详细的步骤和代码例如以下: (1) 訪问Google

如何用Google APIs和Google的应用系统进行集成(2)----发现Google APIs的RESTFul服务

上篇文章,我提到了,Google APIs暴露了86种不同种类和版本的API.我们可以通过在浏览器里面输入https://www.googleapis.com/discovery/v1/apis这个URL地址,其将会把所有Google API支持的不同种类和版本的API全部列出来.其具体信息如下: 序号 API 标题 名字 版本 RestFul请求的URL RestFul请求的URL 1 Ad Exchange Buyer API adexchangebuyer v1 https://www.g

如何用Google APIs和Google的应用系统进行集成(1)----Google APIs简单介绍

Google的应用系统提供了很多的应用,比如 Google广告,Google 任务,Google 日历,Google blogger,Google Plus,Google 地图等等非常的多的应用,请见下图, 下图中列出的只是Google APIs中的冰山一角(Google API总共支持大约80几种不同种类和版本的Google API,我将在后面的章节中详细列出).有的时候,我们需要把这些系统的数据集成到我们自己的系统当中(自己开发的Web系统,或者其他的系统当中).这个时候,我们就不得不了解如

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

在Google RESTFul API中,Google Blogger API(Google博客API)应该和我们的生活离得最近:因为几乎很多人每天都在看博客,都在写博客,都听说过博客.在前面的Google的应用系统进行集成(5)和Google的应用系统进行集成(6)的系列文章中,我们提到了如何把Google Calendar和Google Tasks的JSON Schema转换成XML的XSD的Schema:从博客的访问量来看,还是有很多志同道合的朋友们对这个比较感兴趣,因此,这个章节,我继续

如何用Google APIs和Google的应用系统进行集成(5)----如何把Google Tasks的JSON Schema转换成XML的Schema(XSD)?

前面说了一些Google API的介绍,但是在实际的开发当中,我们可能需要把Google RESTful API返回的JSON数据转换成XML数据输入到第三方系统,这在企业应用集成里面非常的常见.那么里面就有一个问题,如何确保转换后的XML数据格式是规范的,这就需要XML Schema(XML)来进行校验.现在关键是,我们只知道Google API的JSON的schema,但是Google RESTful并没有提供返回数据的XML的schema,那么XML的Schema将会是什么样子的呢?让我以

如何用Google APIs和Google的应用系统进行集成(6)----如何把Google Calendar的JSON Schema转换成XML的Schema(XSD)?

有Google Task的地方,一般都会有Google Calendar,我在上个章节给大家分享了,如何用Google APIs和Google的应用系统进行集成(5)----如何把Google Tasks的JSON Schema转换成XML的Schema(XSD)?(http://blog.csdn.net/chancein007/article/details/29645055),那么Google Calendar的JSON Schema转换成XML的Schema将会是什么样子的呢?首先我们先

Android SDK Manager Google Apis 下载

本意是想利用google的gcm来实装android推送功能的,很遗憾, google貌似已经停止提供啥服务给国内了,或者说国内想继续使用google 服务暂时变得几乎不可能了.找了个代理来进行google adt的下载之后, 打开里面的sdk manager,发现竟然找了好久的google apis就在下载一览 里面.很激动的去点击下载,结果,每次都下载失败.超时呀什么的乱七八糟 的错误.这里发现,原来sdk manager同大部分网络应用一样,使用的是tcp/ip 协议,而我的代理是http

Unable to resolve target &#39;Google Inc.:Google APIs:8&#39;

当从网上下载一个Android项目打开的时候,有可能就会报错:Unable to resolve target 'Google Inc.:Google APIs:8' 这是由于项目的target使用的是Google的API,但我们的Eclipse中并没有装相应的SDK包,系统查找不到自然就报错了,自己也遇到过这个问题,现在把解决方法写出来给一些遇到同样问题的朋友一点帮助吧! 首先我要讲的第一个方法是网上大部分人说的解决办法 (一)在项目里面找到project.properties打开,将里面的t

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

在Google RESTFul API中,Google Blogger API(Google博客API)应该和我们的生活离得近期:由于差点儿非常多人每天都在看博客,都在写博客,都听说过博客.在前面的Google的应用系统进行集成(5)和Google的应用系统进行集成(6)的系列文章中.我们提到了怎样把Google Calendar和Google Tasks的JSON Schema转换成XML的XSD的Schema.从博客的訪问量来看,还是有非常多志同道合的朋友们对这个比較感兴趣,因此,这个章节.