怎样用Google APIs和Google的应用系统进行集成(3)—-调用Google 发现(Discovery)API的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 Discovery RESTFul的服务:https://www.proxy.ustclug.org/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.proxy.ustclug.org/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.proxy.ustclug.org/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源码。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118859.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Idea激活码永久有效Idea2021.2激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2021.2激活码教程-持续更新,一步到位Idea激活码永久有效2021.2激活码教程-Windows版永久激活-持续更新,Idea激活码2021.2成功激活

  • scrapy爬虫出现Forbidden by robots.txt[通俗易懂]

    scrapy爬虫出现Forbidden by robots.txt[通俗易懂]先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息Forbiddenbyrobots.txt,看来是请求被拒绝了。开始因为是淘宝页面有什么保密机制,防止爬虫来抓取页面,于是在spider中填入各种header信息,伪装成浏览器,结果还是不行。。

  • 惠普台式电脑安装系统按哪个键_hp不识别u盘装系统

    惠普台式电脑安装系统按哪个键_hp不识别u盘装系统当我们使用U盘给电脑装系统时,需要进入BIOS设置从USB启动,不过设置BIOS太麻烦了,而且大多数电脑现在都支持快捷键启动,如惠普笔记本,那么惠普usb装系统按哪个键呢?接下来小编就跟大家讲解一下,希望能够帮助到大家。惠普usb装系统步骤阅读1、将U盘插在电脑的USB接口,开机并不断按下启动U盘快捷键f12。2、在进入系统启动菜单中选择有USB字样的选项并回车。3、重启电脑,选择YunQiShi…

  • Java Web项目 图书管理系统「建议收藏」

    Java Web项目 图书管理系统「建议收藏」版权声明:本文为博主原创文章,未经博主允许不得转载2019.5.22更新看到很多人看这个项目我也没想到,不过我现在不在CSDN写文章了,博客地址链接←这是我的博客地址链接GitHub地址链接←这是我的github地址链接里面有我学习Java的过程以及笔记,希望大家一起交流。由于刚刚学习完JSP和Servlet在学习框架之前下你给更加巩固一下前面的知识所以写…

  • 计算机设备问题代码43,设备管理器错误代码(代码43)的六种解决方法

    内容一、“由于此设备存在问题,Windows已将其停止(代码43)”),这是问题的原因原因分析:代码43错误是多个设备管理器错误代码之一。当设备管理器停止硬件设备时,会生成此错误,这可能是由硬件设备或设备驱动程序故障引起的。设备管理器错误代码(代码43)的详细信息可以在设备属性的“设备状态”区域中找到。引起问题的设备将在设备中用感叹号标记)设备管理器,如下图所示:有关如何解决此问题的信息,…

  • Python迭代DataLoader时出现TypeError: Caught TypeError in DataLoader worker process 0.错误。

    Python迭代DataLoader时出现TypeError: Caught TypeError in DataLoader worker process 0.错误。迭代DataLoader时出现TypeError:CaughtTypeErrorinDataLoaderworkerprocess0.错误。遇见一个难以解决的问题遇见一个难以解决的问题迭代DataLoader时出现以下错误,暂时不知道怎么解决,向大家求救,是一个比较稀罕的错误,也分享给大家一个奇葩的问题一起讨论。Traceback(mostrecentcalllast…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号