java 在微博上自动发布图片以及内容

先申请自己用的微博成为开发者 , 获取到微博给的APP key和APP Secret这两个参数

利用下面的代码可以获取到code, 就可以用APP key 和 APP Secret  三个参数获取到access_token

public static void main(String[] args) throws Exception {
        //获取微博中的code
        Oauth oauth = new Oauth();
        // 弹出默认浏览器,登陆个人微博帐户后会出现一个code
        BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
        System.out.print("Hit enter when it's done.[Enter]:");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 读取用户输入的code(前面的浏览器中获取的)
        String code = br.readLine();
        try{
            // 获取到AccessToken
            String accessToken = oauth.getAccessTokenByCode(code).getAccessToken();
            System.out.println(accessToken);
        } catch (WeiboException e) {
            log.error("accessToken:"+e);
        }
    }

我之前用的官方给的java SDK  由于官方没有对SDK进行维护 里面到处都是坑  自己请教大佬   终于写把微博自动发布写出来了    属实太不容易了

        //微博中的access_token
        String accessToken = "";
    
        //微博分享的路径
        String Wburl = "https://api.weibo.com/2/statuses/share.json"

        //绑定安全域名
        String SecureUrl = "";

        //微博发布的内容
        String contents = "";
        //微博发布的内容和安全域名转换为URLEncoder(必须要转换URLEncode)
        String content = URLEncoder.encode(contents+SecureUrl, "UTF-8");

        //将参数转为JSON才能转发到微博
        JSONObject object = new JSONObject();
        //获取rip的地址
        object.put("rip","");
        //微博的token
        object.put("access_token",accessToken);
        //文件上传
        object.put("pic",new File(""));
        //上传文件的内容
        object.put("status",content);

        //
        return HttpRequest.post("Wburl")
                 //header  设置请求头信息
                .header("Content-Type", "application/json")
                .header("Accept", "*/*")
                .header("Accept-Encoding", "gzip, deflate, br")
                .header("Connection", "keep-alive")
                .form(object).execute().body();
   

第一次写博客   写的不是很好   大家可以凑乎的看   这个代码是本人亲自测试的   可以成功

希望我的这篇博客可以帮助到大家    也欢迎大家前来指教    谢谢大家的观看   

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用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; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值