google-http-java-client(android学习篇2源码)
package com.google.api.services.samples.googleplus.cmdline.simple; |
import com.google.api.client.http.GenericUrl; |
import com.google.api.client.http.HttpRequest; |
import com.google.api.client.http.HttpRequestFactory; |
import com.google.api.client.http.HttpRequestInitializer; |
import com.google.api.client.http.HttpResponse; |
import com.google.api.client.http.HttpResponseException; |
import com.google.api.client.http.HttpTransport; |
import com.google.api.client.http.javanet.NetHttpTransport; |
import com.google.api.client.json.GenericJson; |
import com.google.api.client.json.JsonFactory; |
import com.google.api.client.json.JsonObjectParser; |
import com.google.api.client.json.jackson2.JacksonFactory; |
import com.google.api.client.util.Key; |
import java.io.IOException; |
import java.util.List; |
/** |
* Simple example that demonstrates how to use <a |
* href="code.google.com/p/google-http-java-client/">Google HTTP Client Library for Java</a> with |
* the <a href="https://developers.google.com/+/api/">Google+ API</a>. |
* |
* <p> |
* Note that in the case of the Google+ API, there is a much better custom library built on top of |
* this HTTP library that is much easier to use and hides most of these details for you. See <a |
* href="http://code.google.com/p/google-api-java-client/wiki/APIs#Google+_API">Google+ API for |
* Java</a>. |
* </p> |
* |
* @author Yaniv Inbar |
*/ |
publicclassGooglePlusSample{ |
privatestaticfinalString API_KEY = |
"Enter API Key from https://code.google.com/apis/console/?api=plus into API_KEY"; |
privatestaticfinalString USER_ID ="116899029375914044550"; |
privatestaticfinalint MAX_RESULTS =3; |
staticfinalHttpTransport HTTP_TRANSPORT =newNetHttpTransport(); |
staticfinalJsonFactory JSON_FACTORY =newJacksonFactory(); |
/** Feed of Google+ activities. */ |
publicstaticclassActivityFeed{ |
/** List of Google+ activities. */ |
@Key("items") |
privateList<Activity> activities; |
publicList<Activity> getActivities(){ |
return activities; |
} |
} |
/** Google+ activity. */ |
publicstaticclassActivityextendsGenericJson{ |
/** Activity URL. */ |
@Key |
privateString url; |
publicString getUrl(){ |
return url; |
} |
/** Activity object. */ |
@Key("object") |
privateActivityObject activityObject; |
publicActivityObject getActivityObject(){ |
return activityObject; |
} |
} |
/** Google+ activity object. */ |
publicstaticclassActivityObject{ |
/** HTML-formatted content. */ |
@Key |
privateString content; |
publicString getContent(){ |
return content; |
} |
/** People who +1'd this activity. */ |
@Key |
privatePlusOners plusoners; |
publicPlusOners getPlusOners(){ |
return plusoners; |
} |
} |
/** People who +1'd an activity. */ |
publicstaticclassPlusOners{ |
/** Total number of people who +1'd this activity. */ |
@Key |
privatelong totalItems; |
publiclong getTotalItems(){ |
return totalItems; |
} |
} |
/** Google+ URL. */ |
publicstaticclassPlusUrlextendsGenericUrl{ |
publicPlusUrl(String encodedUrl){ |
super(encodedUrl); |
} |
@SuppressWarnings("unused") |
@Key |
privatefinalString key = API_KEY; |
/** Maximum number of results. */ |
@Key |
privateint maxResults; |
publicint getMaxResults(){ |
return maxResults; |
} |
publicPlusUrl setMaxResults(int maxResults){ |
this.maxResults = maxResults; |
returnthis; |
} |
/** Lists the public activities for the given Google+ user ID. */ |
publicstaticPlusUrl listPublicActivities(String userId){ |
returnnewPlusUrl( |
"https://www.googleapis.com/plus/v1/people/"+ userId +"/activities/public"); |
} |
} |
privatestaticvoid parseResponse(HttpResponse response)throwsIOException{ |
ActivityFeed feed = response.parseAs(ActivityFeed.class); |
if(feed.getActivities().isEmpty()){ |
System.out.println("No activities found."); |
}else{ |
if(feed.getActivities().size()== MAX_RESULTS){ |
System.out.print("First "); |
} |
System.out.println(feed.getActivities().size()+" activities found:"); |
for(Activity activity : feed.getActivities()){ |
System.out.println(); |
System.out.println("-----------------------------------------------"); |
System.out.println("HTML Content: "+ activity.getActivityObject().getContent()); |
System.out.println("+1's: "+ activity.getActivityObject().getPlusOners().getTotalItems()); |
System.out.println("URL: "+ activity.getUrl()); |
System.out.println("ID: "+ activity.get("id")); |
} |
} |
} |
privatestaticvoid run()throwsIOException{ |
HttpRequestFactory requestFactory = |
HTTP_TRANSPORT.createRequestFactory(newHttpRequestInitializer(){ |
@Override |
publicvoid initialize(HttpRequest request){ |
request.setParser(newJsonObjectParser(JSON_FACTORY)); |
} |
}); |
PlusUrl url =PlusUrl.listPublicActivities(USER_ID).setMaxResults(MAX_RESULTS); |
url.put("fields","items(id,url,object(content,plusoners/totalItems))"); |
HttpRequest request = requestFactory.buildGetRequest(url); |
parseResponse(request.execute()); |
} |
publicstaticvoid main(String[] args){ |
if(API_KEY.startsWith("Enter ")){ |
System.err.println(API_KEY); |
System.exit(1); |
} |
try{ |
try{ |
run(); |
return; |
}catch(HttpResponseException e){ |
System.err.println(e.getMessage()); |
} |
}catch(Throwable t){ |
t.printStackTrace(); |
} |
System.exit(1); |
} |
} |
google-http-java-client(android学习篇2源码)的更多相关文章
- Netty学习篇⑥--ByteBuf源码分析
什么是ByteBuf? ByteBuf在Netty中充当着非常重要的角色:它是在数据传输中负责装载字节数据的一个容器;其内部结构和数组类似,初始化默认长度为256,默认最大长度为Integer.MAX ...
- Android学习笔记——从源码看Handler的处理机制
可能是出于性能的考虑,Android的UI操作是非线程安全的. 也就是说,如果你在一个新开的线程中直接操作UI是会引发异常的. 但是,Android又规定,不要去阻塞UI线程!否则,轻者引起程序卡顿, ...
- ESA2GJK1DH1K基础篇: Android实现MQTT封装源码使用说明
说明 这一节说明一下基础篇APP源码里面MyMqttCilent.java这个文件的使用 新建工程 安装MQTT的jar包 implementation 'org.eclipse.paho:org.e ...
- [Android FrameWork 6.0源码学习] View的重绘过程之WindowManager的addView方法
博客首页:http://www.cnblogs.com/kezhuang/p/关于Activity的contentView的构建过程,我在我的博客中已经分析过了,不了解的可以去看一下<[Andr ...
- Java中常用的七个阻塞队列第二篇DelayQueue源码介绍
Java中常用的七个阻塞队列第二篇DelayQueue源码介绍 通过前面两篇文章,我们对队列有了了解及已经认识了常用阻塞队列中的三个了.本篇我们继续介绍剩下的几个队列. 本文主要内容:通过源码学习De ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(二)
1,接着我们上一篇继续介绍,在上一篇我们介绍了简单的@Inject和@Component的结合使用,现在我们继续以老师和学生的例子,我们知道学生上课的时候都会有书籍来辅助听课,先来看看我们之前的Stu ...
- android 近百个源码项目【转】
http://www.cnblogs.com/helloandroid/articles/2385358.html Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多 ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(一)
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
随机推荐
- 进制转换器(十进制转n进制)
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 /*链栈类型定义*/ typedef struct node ...
- Microsoft Mole原理及常见问题整理
Moles与Moq(Rhino.Mocks)比较 作用范围 Moq与Rhino.Mocks这类的Mock是对Interface或AbstractClass做Mock, 而Moles是Mock整个 ...
- Windows平台下的读写锁
Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...
- C# 开发XML Web Service与Java开发WebService
一.web service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...
- Sketchup+ArcGIS三维建模与管理
一.软件安装及其说明 1.需要安装的软件及其安装: 这份报告主要涉及到的有三个需要安装的软件ArcGIS9.3(或9.2) .Sketchup6.0和SketchUp6 ESRI 插件. ArcGIS ...
- Gmail新版截图曝光 你还能认得出来吗?
Gmail即将迎来巨大的改变.据外媒消息,目前Google正在测试新的网页版Gmail.要知道从Gmail推出以来还从未进行过如此大的改动. 新版Gmail中,界面相比之前,采用了更加扁平话的设计,整 ...
- (转)JS浮动窗口(随浏览器滚动而滚动)
原文:http://hi.baidu.com/aiyayaztt/item/4201c55a6b729dced2e10c79 JS浮动窗口(随浏览器滚动而滚动) 往往用于一些联系方式,互动平台模块,随 ...
- return, exit, _exit的区别
return是返回的最常用的方式 _exit属于POSIX定义的系统调用 exit是GLIBC封装之后的函数 1 _exit和exit都会导致整个进程退出,清理进程所占用的资源,但是glibc封装ex ...
- (spring-第11回【IoC基础篇】)BeanWrapper--实例化Bean的第四大利器
重复是理解和记忆的最好方法.在讲实例化Bean的每个步骤之前,我都会先复习一下Bean实例化的整个过程: 结合图片我们回顾一下具体的过程: ResourceLoader加载配置信息, 由BeanDef ...
- Python入门(三,初级)
一,函数调用 定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构. 这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行. 如下实例调用了pr ...