最近在开发中需要用到关联新浪微博好友的功能。
研究了微博好几天,主要就卡在了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获取需要的数据