最新JAVA调用新浪微博API之发微博、发图片

前言:

微博官方在2017年3月份调整了相关接口,取消了网上现有教程中发送微博(updateStatus)以及发送图片(uploadStatus)的接口,那在微博开发者平台创建应用以后,该如何发送微博与图片呢?

流程:

一、登录开放平台创建应用



 

 

 二、下载微博开发相关javaSDK,
github中下载网络延迟太严重,所以我把我下载好的放上来,需要的可以直接下载了。

三、配置文件。

client_ID = 应该ID
client_SERCRET = 应用秘钥
redirect_URI = 授权回调地址
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/
accessToken=2.00LXQazBiA7gUB88aa39e5ae8mLSVB

四、获取授权码,使用样例操作,获取授权码,注意,该授权码有有效期,开发测试阶段需要每天获取方能顺利测试。

package weibo4j.examples.oauth2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import weibo4j.Oauth;
import weibo4j.model.WeiboException;
import weibo4j.util.BareBonesBrowserLaunch;

public class OAuth4Code {
	public static void main(String [] args) throws WeiboException, IOException{
		Oauth oauth = new Oauth();
		BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
		System.out.println(oauth.authorize("code"));
		System.out.print("Hit enter when it's done.[Enter]:");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String code = br.readLine();
		Log.logInfo("code: " + code);
		try{
			System.out.println(oauth.getAccessTokenByCode(code));
		} catch (WeiboException e) {
			if(401 == e.getStatusCode()){
				Log.logInfo("Unable to get the access token.");
			}else{
				e.printStackTrace();
			}
		}
	}
}

  

五、进入正题,由于之前版本发送微博、图片的方法已经需要更高的权限才能使用,那小白阶段该如何发送微博与图片呢?使用statuses/share,第三方分享一条链接到微博,也就是说发送的微博内容里面必须要有链接。

仔细看代码与之前的变化:

public Status updateStatus(String status) throws WeiboException {
		return new Status(client.post(WeiboConfig.getValue("baseURL")
				+ "statuses/share.json",
				new PostParameter[] { new PostParameter("status", status) },
				access_token));
	}

 

public Status uploadStatus(String status, ImageItem item)
			throws WeiboException {
		return new Status(client.multPartURL(WeiboConfig.getValue("baseURL")
				+ "statuses/share.json",
				new PostParameter[] { new PostParameter("status", status) },
				item, access_token));
	}

 具体操作代码如下:

public static void main(String[] args) throws Exception{
		Timeline tl = new Timeline("2.00LXQazBiA7gUB88aa39e5ae8mLSVB");
		tl.updateStatus("打开支付宝首页搜索“7151437”,即可领红包,淘宝购物可用,下馆子可用,逛超市也可用。http://lxzqz.iteye.com/blog/2423292");
		File image = new File("E://picture/IMG_20160209_115848.jpg");
		FileInputStream in = new FileInputStream(image);
		byte[] ba = new byte[in.available()];
		in.read(ba);
		ImageItem it = new ImageItem(ba);
		//防止发送图片时中文乱码
		String content = URLEncoder.encode("打开支付宝首页搜索“7151437”,即可领红包,淘宝购物可用,下馆子可用,逛超市也可用。http://lxzqz.iteye.com/blog/2423292", "UTF-8");
		tl.uploadStatus(content, it);
		in.close();
	}

 赶紧去尝试一下吧!有不懂的地方欢迎留言。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
使用springboot做基础框架,提供简单页面做图片上传,接口直接模拟微博登陆,上传完成后返回图片保存链接 public String getSinaCookies() { String base64name = Base64Utils.encodeToString(username.getBytes()); String loginUrl = "https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543"; String params = "entry=sso&gateway=1&from=null&savestate=30&useticket=0&pagerefer;=&vsnf=1&su;=" + base64name; params += "&service=sso&sp;=" + password + "&sr=1920*1080&encoding=UTF-8&cdult=3&domain=sina.com.cn&prelt=0&returntype=TEXT"; //登录 try { URL url = new URL(loginUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestMethod("POST"); OutputStream out = conn.getOutputStream(); out.write(params.getBytes()); out.flush(); out.close(); String sessionId = ""; String cookieVal = ""; String key = null; //取cookie for (int i = 1; (key = conn.getHeaderFieldKey(i)) != null; i++) { if (key.equalsIgnoreCase("set-cookie")) { cookieVal = conn.getHeaderField(i); cookieVal = cookieVal.substring(0, cookieVal.indexOf(";")); sessionId = sessionId + cookieVal + ";"; } } if (sessionId != null) { String[] cookiearr = sessionId.split(";"); for (int i = 0; i < cookiearr.length; i++) { if (cookiearr[i].startsWith("SUB") && !cookiearr[i].startsWith("SUBP")) { sessionId = cookiearr[i] + ";"; } } } return sessionId; } catch (Exception e) { e.printStackTrace(); return null; } }
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

链诸葛

真爱了。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值