您的位置:首页 > 移动开发 > Android开发

android 使用新浪微博API接口

2013-09-23 11:09 267 查看
最近在开发中需要用到关联新浪微博好友的功能。

研究了微博好几天,主要就卡在了HTTPS请求协议上。

之前没有注意到协议问题,所以一直用的http协议    我说怎么提交请求的时候获取不到返回值


在这里给遇到同样问题的朋友做个参照,希望可以帮助到你们。

新浪微博的认证授权这里就不多说了,官方文档中有非常详细的说明。

授权成功后你就可以获取access_token和uid(用户id)两个参数。

这里本文以获取微博双向关注列表的接口为例子,想查看其他接口URL的朋友狂点   新浪微博API

根据授权后的两个参数和接口URL拼凑后的路径为

“https://api.weibo.com/2/friendships/friends/bilateral.json?uid=1679441897&access_token=2.00XYlepBTCdHfB701172c7a3PI3N7C”

https get请求方法:

private String GetHttps(String https) {
String content="";
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[] { new MyTrustManager() },
new SecureRandom());
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection
.setDefaultHostnameVerifier(new MyHostnameVerifier());
HttpsURLConnection conn = (HttpsURLConnection) new URL(https)
.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null){
sb.append(line);
content = sb.toString();
}
} catch (Exception e) {
Log.i("linshi", e.getMessage());
}
return content;
}


还要重写X509TrustManager这个接口,通过实现X509TrustManager来定义了证书管理器,对服务器和客户端进行验证方法,把所有的方法写成空(如果有的话则需要验证),还需要定义我们的KeyStore来源数字签名证书文件)。然后初始化证书管理工厂,并调用getTrustManagers()方法来获取这个管理器,在这里我们不需要做防钓鱼之类的操作,所以我们把它的证书清空,使其不需要验证服务器证书,可以通过任何服务器。

private class MyHostnameVerifier implements HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}

}

private class MyTrustManager implements X509TrustManager {

public void checkClientTrusted(X509Certificate[] chain, String authType)

throws CertificateException {
// TODO Auto-generated method stub

}

public void checkServerTrusted(X509Certificate[] chain, String authType)

throws CertificateException {
// TODO Auto-generated method stub

}

public X509Certificate[] getAcceptedIssuers() {

// TODO Auto-generated method stub

return null;
}
}


这样把之前拼凑的URL带进gethttps方法运行后,就可以获取新浪微博返回的json数据了。



之后可以根据自己的需求,解析json获取需要的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息