android 使用新浪微博API接口

本文介绍如何解决新浪微博HTTPS接口调用的问题,包括获取access_token和uid,使用HTTPS请求方法及必要的信任管理器配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在开发中需要用到关联新浪微博好友的功能。

研究了微博好几天,主要就卡在了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获取需要的数据大笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值