http://www.eoeandroid.com/thread-53701-1-1.html

package mobson.weiboku.view;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import mobson.weiboku.R;
import mobson.weiboku.model.User;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.TextView;
/**
* 测试新浪微博API
* @author syn
* @date 2010/12/22
*/
public class TestActivity extends Activity
{
private static final String BASE_URL = "http://api.t.sina.com.cn/"; //API接口
private static final String CONSUMER_KEY = "270793661"; //你申请的Key
private static final String HEADER_AUTHO = "Authorization"; //Authorization
private static final String HEADER_BASIC = "Basic "; //Basic
private static final String ERROR = "MyError"; //错误
 
List<myTest> myTestList;
/**
* 测试用的类,用于解析JSON,因为只是测试,所以乱写一下
*/
public class myTest
{
private Date created_at; //返回微博发布的时间
private String text; //微博内容
private User user; //微博用户信息
public myTest(JSONObject object) throws JSONException //解析JSON文件
{
text=""; user=null;
created_at=new Date(object.getString("created_at"));
text=object.getString("text");
user=new User(object.getJSONObject("user"));
}
}
@Override
public void onCreate(Bundle savedInstanceState)
{
String tailUrl="statuses/public_timeline.json"; //我要获得的是最新的公共微博
String response=getResponse(tailUrl, MainActivity.loginUser);//调用提交函数,此函数是核心部分
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.test);
TextView textView01=(TextView)findViewById(R.id.test);
if(response.startsWith(ERROR))
textView01.setText("error");
else
{
JSONArray array;
try
{
array = new JSONArray(response);
for (int i = 0; i < array.length(); i++)
{
myTest mytest= new myTest(array.getJSONObject(i));
//myTestList.add(mytest);
String content="Content:"+mytest.text+" Author:"+mytest.user.getNike()+" Date:"+mytest.created_at;
textView01.setText(content);
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
/**
* 此函数提交URL,返回访问结果
* @param tailUrl json或者xml的url
* @param user 用户的一个对象
* @return 提交结果
*/
private static String getResponse(String tailUrl,User user)
{
String httpUrl=BASE_URL+tailUrl;
ArrayList<NameValuePair> postParams=new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("source",CONSUMER_KEY)); //封装入APP Key
try
{
 
HttpPost httpRequest = new HttpPost(httpUrl);
httpRequest.setEntity(new UrlEncodedFormEntity(postParams,HTTP.UTF_8)); //把参数放入Entity
httpRequest.addHeader(HEADER_AUTHO, HEADER_BASIC+user.encodeBase64NamePass()); //这里就是给用户的用户名和密码加密,然后放入http头
httpRequest.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE,false);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse httpResponse = httpclient.execute(httpRequest); //提交
int statusCode=httpResponse.getStatusLine().getStatusCode(); //获得结果码200是正确
if ( statusCode== HttpStatus.SC_OK)
{
String strResult = EntityUtils.toString(httpResponse.getEntity());
Log.e("WeiboKu", "strResult :"+strResult);
return strResult;
}
else
{
Log.e("WeiboKu", "strResult Error:"+statusCode);
return ERROR+String.valueOf(statusCode);
}
}
catch (Exception e)
{
Log.e("WeiboKu", "getResponse Exception:"+e.getMessage());
return ERROR+e.getMessage().toString();
}
}
}

新浪微博(t.sina)简单授权代码及API测试的更多相关文章

  1. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(四)授权代码维护

    一.前言 权限系统设计中,授权代码是用来控制数据访问权限的.授权代码说白了只是一树型结构的数据,没有什么其它的业务意义.那么这个页面的功能也就非常简单授权代码维护:新增.修改.删除授权代码数据. 二. ...

  2. Security » Authorization » 简单授权

    Simple Authorization¶ 简单授权 82 of 86 people found this helpful Authorization in MVC is controlled thr ...

  3. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  4. 原生js简单调用百度翻译API实现的翻译工具

    先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...

  5. 手写DotNet Core 认证授权代码

    在普通的MVC项目中 我们普遍的使用Cookie来作为认证授权方式,使用简单.登录成功后将用户信息写入Cookie:但当我们做WebApi的时候显然Cookie这种方式就有点不适用了. 在dotnet ...

  6. 使用go, gin, gorm编写一个简单的curd的api接口

    go 是一门非常灵活的语言,既具有静态语言的高性能,又有动态语言的开发速度快的优点,语法也比较简单,下面是通过简单的代码实现了一个简单的增删改查 api 接口 hello world 常规版 新建 d ...

  7. 无需编写代码,API业务流程测试,零代码实现

    引言 除了测试单个接口,我们常常需要对多个有数据或者逻辑关联的接口进行业务流程测试,例如获取验证码-注册-登录.传统测试业务流程需要编写一系列测试代码,现在通过eoLinker全UI界面,无需编写任何 ...

  8. 让 API 测试变的简单。

    做开发已经四年有余了,之前在接口测试的时候最开始用的自己写的测试类进行测试,后来接触到了 postman 和 swagger ,虽然用起来比自己写的强太多了,但是总觉得差点事儿. 一方面是 postm ...

  9. Lucene.net站内搜索—3、最简单搜索引擎代码

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

随机推荐

  1. HDU 5627 Clarke and MST &意义下最大生成树 贪心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5627 题意:Bestcoder的一道题,让你求&意义下的最大生成树. 解法: 贪心,我们从高位 ...

  2. 辨别苹果数据线真伪 苹果计算器 Dashboard 知识

    辨别苹果数据线真伪 苹果计算器 Dashboard 知识  苹果数据线真伪的最简单的辨别: 线质柔软 用数据线连接适配器(苹果自带的适配器)充电 连接手机 如果该手机数据线是假的, 在手机上会提示”该 ...

  3. 构造函数、原型对象prototype、实例、隐式原型__proto__的理解

    (欢迎一起探讨,如果有什么地方写的不准确或是不正确也欢迎大家指出来~) PS: 内容中的__proto__可能会被markdown语法导致显示为proto. 建议将构造函数中的方法都定义到构造函数的原 ...

  4. mybatis 一级缓存和二级缓存

    1.默认是会话期内 一级session缓存 2.二级缓存: 引入二级缓存的jar, 配置 ehcache.xml, mapper.xml引入缓存<cache type="org.myb ...

  5. 在写一次epoll

    epoll & select & poll只能处理IO相关的操作,epoll每一个操作必须注册到时间监控机制中,并且还需要进程或者线程进行管理. 多进程/多线程 和epoll相比较 e ...

  6. Django 项目CRM总结

    0. 项目说明: 1. 销售自动分配客户资源: 给销售分配权重及承单数量,创建权重表,通过销售权重进行从大到小进行排序 以承单数循环添加到列表,承单数是多少列表添加就添加多少次 考虑到如果服务重启,或 ...

  7. Java学习笔记(十二)——eclipse和SVN配置,导入SVN服务器项目

    [前面的话] 北京的天气外加自己的不小心终于病了,在病的过程中,感觉身体好着真好,可以学习,可以吃好吃的,可以去运动,这一病了,干什么都感觉没有力气,身体好着真好. 这个文章的背景是:领导把项目最开始 ...

  8. ubuntu使用命令更新ubuntu系统

    我们都知道ubuntu是一款linux系统,它不像WINDOWS系统,它是一个开源的系统,它随时都在更新它系统,所以人们都说Linux系统要比WINDOWS系统安全.为了我们电脑安全,我们如何利用ub ...

  9. CodeForces 734F Anton and School

    位运算. 两个数的和:$A+B=(AandB)+(AorB)$,那么$b[i]+c[i]=n*a[i]+suma$.可以解出一组解,然后再按位统计贡献验证一下. #pragma comment(lin ...

  10. 洛谷P1880 [NOI1995] 石子合并 [DP,前缀和]

    题目传送门 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆 ...