腾讯微博发表带图片的微博

简介:

鉴于很多网友都说发表腾讯微博的时候出现鉴权的情况,整理了一下已经开发过的微博代码,奉献出来,希望可以帮助到有需要的网友。至于需要认证和鉴权的代码我已经打包jar包了,大家可以直接使用。原理就是根据腾讯微博平台的开发api写成的,网上搜索一下应该很多。

发表带文字的微博方法如下,首先声明要鉴权类:

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. private OAuth oauth = new OAuth();    

其中OAuth提供了两个主要方法,主要是httpGet(String url, String params),和httpPost(String url, String params),其中params参数是经过拼接而得到的,可以直接调用OAuth中

调用发微博的方法:

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. /**       
  4.      * 发送一条文字微博       
  5.      * @param userToken       
  6.      * @param userTokenScret       
  7.      * @param consmerKey       
  8.      * @param consmerScret       
  9.      * @param status       
  10.      * @return       
  11.      */        
  12.     public boolean updateStatus(String userToken, String userTokenScret,        
  13.             String consmerKey, String consmerScret, String status) {        
  14.         String url = "http://open.t...i/t/add";        
  15.         List<Parameter> params = new ArrayList<Parameter>();        
  16.         try {        
  17.             params.add(new Parameter("format""json"));        
  18.             params.add(new Parameter("content", URLEncoder.encode(status,        
  19.                     "UTF-8")));        
  20.             params.add(new Parameter("clientip""127.0.0.1"));        
  21.             String parameter = oauth.getPostParameter("POST", url, userToken,        
  22.                     userTokenScret, consmerKey, consmerScret, params);        
  23.             url += "?" + parameter;        
  24.             String response = oauth.httpPost(url, parameter);        
  25.             JSONObject data = new JSONObject(response);        
  26.             if (data.getString("msg").equals("ok")        
  27.                     || data.getJSONObject("data").getString("id") != null) {        
  28.                 return true;        
  29.             } else {        
  30.                 return false;        
  31.             }        
  32.         } catch (Exception e) {        
  33.             e.printStackTrace();        
  34.         }        
  35.         return false;        
  36.     }    

发表带图片的文字微博方法如下:

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. /**       
  4.      * 发表带图片的微博       
  5.      * @param userToken       
  6.      * @param userTokenScret       
  7.      * @param consmerKey       
  8.      * @param consmerScret       
  9.      * @param status       
  10.      * @param file       
  11.      * @return       
  12.      */        
  13.     public boolean uploadStatus(String userToken, String userTokenScret,        
  14.             String consmerKey, String consmerScret, String status, File file) {        
  15.         String url = "http://open.t...add_pic";        
  16.         List<Parameter> params = new ArrayList<Parameter>();        
  17.         try {        
  18.             params.add(new Parameter("format""json"));        
  19.             params.add(new Parameter("content", URLEncoder.encode(status, "UTF-8")));        
  20.             params.add(new Parameter("clientip""127.0.0.1"));        
  21.             String parameter = oauth.getPostParameter("POST", url, userToken, userTokenScret, consmerKey, consmerScret, params);        
  22.             url += "?" + parameter;        
  23.             HttpClient httpClient = new HttpClient();        
  24.             PostMethod httpPost = new PostMethod(url);        
  25.             List<Parameter> listParams = SignatureUtil.getQueryParameters(parameter);        
  26.             int length = listParams.size() + 1;        
  27.             Part[] parts = new Part[length];        
  28.             int i = 0;        
  29.             for(Parameter p : listParams) {        
  30.                 parts[i++] = new StringPart(p.getName(), SignatureUtil.decode(p.getValue()), "UTF-8");        
  31.             }        
  32.             parts[i++] = new FilePart("pic", file.getName(), file, null"UTF-8");        
  33.             httpPost.setRequestEntity(new MultipartRequestEntity(parts, httpPost.getParams()));        
  34.             int statusCode = httpClient.executeMethod(httpPost);        
  35.             if (statusCode == HttpStatus.SC_OK) {        
  36.                 String response = httpPost.getResponseBodyAsString();        
  37.                 JSONObject data = new JSONObject(response);        
  38.                 if (data.getString("msg").equals("ok") || data.getJSONObject("data").getString("id") != null) {        
  39.                     return true;        
  40.                 } else {        
  41.                     return false;        
  42.                 }        
  43.             }         
  44.         } catch (Exception e) {        
  45.             e.printStackTrace();        
  46.         }        
  47.         return false;        
  48.     }    

使用方法只要导入下面的jar包即可。

顺便说以一下,OAuth中的httpGet(String url, String params)主要用来获取相关微博的信息,比如 获取当前登录用户及其所关注用户的最新微博消息,其他地方方法类似。

 

 
  1. Java 代码复制内容到剪贴板  
  2.       
  3. /**       
  4.      * 获取当前登录用户及其所关注用户的最新微博消息。       
  5.      * @param url       
  6.      * @param page       
  7.      * @param count       
  8.      * @param userToken       
  9.      * @param userTokenScret       
  10.      * @param consmerKey       
  11.      * @param consmerScret       
  12.      */        
  13.     public void getFriendTimeLines(String url, int page, int count, String userToken, String userTokenScret,        
  14.             String consmerKey, String consmerScret) {        
  15.         List<Parameter> params = new ArrayList<Parameter>();        
  16.         params.add(new Parameter("Reqnum", String.valueOf(count)));        
  17.         params.add(new Parameter("type", String.valueOf(0)));        
  18.         params.add(new Parameter("Pageflag", String.valueOf(page - 1)));        
  19.         params.add(new Parameter("format""json"));        
  20.         String parameter;        
  21.         try {        
  22.             parameter = oauth.getPostParameter("GET", url, userToken,        
  23.                     userTokenScret, consmerKey, consmerScret, params);        
  24.             String content = oauth.httpGet(url, parameter);        
  25.             //把返回的内容转会成JSON格式        
  26.             JSONObject data = new JSONObject(content);        
  27.             //....        
  28.         } catch (Exception e) {        
  29.             e.printStackTrace();        
  30.         }        
  31.     }    

下载文件 (已下载 162 次)




     本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/962557,如需转载请自行联系原作者



相关文章
|
6月前
|
数据采集 人工智能 自然语言处理
“弱智贴吧”的数据,居然是最强中文语料库
【4月更文挑战第8天】研究人员推出COIG-CQIA,一个高质量的中文指令调整数据集,旨在解决中文语言模型发展的挑战。该数据集源于多元中文互联网资源,注重多样性和真实性,对提升模型性能和安全性有显著作用。研究发现,数据集的质量直接影响模型效果,且模型规模并非决定性能的唯一因素。安全评估显示,使用CQIA训练的模型在安全基准上超越GPT-3.5-turbo0613。
87 2
“弱智贴吧”的数据,居然是最强中文语料库
|
6月前
基于AutoJs的今日头条极速版读新闻
基于AutoJs的今日头条极速版读新闻
84 0
纪念一下文章上热榜
纪念一下文章上热榜 26
114 0
纪念一下文章上热榜
浅谈微博与贴吧!
       微博是一种实时通讯的广播式社交平台。(新浪)微博可以类比QQ的好友动态与微信的朋友圈,只是能看到你的微博动态的“好友”面向全球各地。“微博”起源于美国,起初Twitter创立时的灵感就是源于大众“随时随地发布自己最新情况”的需求,利用互联网实现了。
1541 0
[今日干货]微博如何才能快速增粉?
1、一定的粉丝基数(关注的理由1) 大多数人都有从众心理,没有一定量的粉丝,就不能让别人感觉到这是一个很值得关注的微博,粉丝凭什么关注你? 2、一定的平均转发数(关注的理由2) 这也是因为大多数人的从众心理,没有一定的平均转发数,就不能显得你发布的内容有意思,粉丝凭什么帮你转发? 3、微博大号的推荐(关注的动力) 李开复一句话推荐,可以帮一个新微博一天增加3万个粉丝;营销类微博号虽然没那么厉害,但是推荐一次,也可以帮一个微博一天内增加200-1000个粉丝。
931 0
|
Web App开发 数据采集 Python
Python爬虫之微博好友圈
数学建模已结束,刚开始的目标就是不熬夜,结果还是熬夜了(QAQ),缓了一天就来写简书了,感觉很久没爬虫了,今天就爬下移动端的微博好友圈信息。 代码 import requests import json headers = { 'Cookie':'xxxxxxxx', 'User_Agent':'Mozilla/5.
1365 0
|
前端开发
分享内容到朋友圈微博等
喜欢的朋友可以关注下,粉丝也缺。 下面为大家介绍如何分享内容到朋友圈 //分享初始化 function initShare(){ //获取当前页面URL var geturl=window.
1084 0
微信吸粉实战二:腾讯新闻
“老师,你快教我加微信粉丝!”“老师,我怎么样才可以找到他们呢?”  “老师,…….“  在微信和QQ上经常遇到很多不是我VIP成员的人,来找我问这类似的问题,真有时候感觉忙不过来了。
1088 0