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 ...
随机推荐
- 戴文的Linux内核专题:01介绍
转自Linux中国 译者按:本文作者戴文.科利尔.约翰逊(Devyn Collier Johnson)今年才19岁,但是他在Linux内核.人工智能.编程语言方面拥有丰富的经验,本文是其在linux. ...
- iis7.5 设置伪静态
1)首先新建一个应用程序池,名称任意,比如:nettest,托管管道模式先暂时设置为集成模式,等下面的一系列设置完成之后再设置成经典模式: 2)部署好站点,并将此站点的应用程序池设置为nettest; ...
- 使用Fragment 实现动态UI 和 动态添加Fragment
首先写好每个Fragment: 1.在第一个Fragment写一个按钮,使其加载下一个Fragment 布局: <LinearLayout xmlns:android="http:// ...
- [转]建立swap分区
1,fdisk 时设置id号82(t选项中L可查) 2,mkswap /dev/sdXx 3,swapon /devsdXx 4,cat /proc/swap or swapon -s 就可以看到了 ...
- SharePoint开发 - 自定义导航菜单(一)菜单声明与配置
博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...
- 发布Restful服务时出现IIS 指定了身份验证方案错误时的解决方案(IIS specified authentication schemes)
发布RESTful服务,当访问.svc文件时出现如下错误时: IIS 指定了身份验证方案“IntegratedWindowsAuthentication, Anonymous”,但绑定仅支持一种身份验 ...
- HTML---6 运算符,类型转换
1.类型转换: 分为自动转换和强制转换,一般用强制转换. 其他类型转换为整数:parseint(): 其他类型转换为小数:parsefloat(): 判断是否是一个合法的数字类型:isNaN(): 是 ...
- IOS导航栏的使用方法
本文是使用纯代码实现一个导航栏的效果.单击按钮并且产生事件.基本思路是: 1.创建一个导航栏(UINavigationBar对象) 2.创建一个导航栏集合(UINavigationItem对象) 3. ...
- [转]dev C++编写windows程序遇到问题
1.工具-编译选项-编译器-在连接器命令行加入以下命令: -mwindows 2.出现错误:undefined reference to `PlaySoundA@12' 解决办法:工具-编译选项-编译 ...
- Day1 summary
对比了几篇在hadoop环境中实现关联规则.频繁项集的论文,文章结构都涉及mapreduce模型.传统与改进apriori算法比较.实验结果分析(数据规模-用时or加速比,节点-用时or加速比).有一 ...