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

简介:

鉴于很多网友都说发表腾讯微博的时候出现鉴权的情况,整理了一下已经开发过的微博代码,奉献出来,希望可以帮助到有需要的网友。至于需要认证和鉴权的代码我已经打包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,如需转载请自行联系原作者



相关文章
|
7月前
|
JSON 数据格式 网络架构
技术心得:快手的小视频爬取
技术心得:快手的小视频爬取
400 1
|
数据采集 小程序 前端开发
【重写爬虫案例】百度图片、今日头条今日街拍爬取图片中遇到的问题
【重写爬虫案例】百度图片、今日头条今日街拍爬取图片中遇到的问题
【重写爬虫案例】百度图片、今日头条今日街拍爬取图片中遇到的问题
|
数据采集 索引
【原创】微博 关键词 爬虫
【原创】微博 关键词 爬虫
|
定位技术
微博进入肉搏时代:腾讯明争新浪,网易微博暗斗
   在2009年到2010年,新浪将微博市场大局紧紧攥在自己手里。但从2010年末,新浪之外的其他三家门户开始发力,腾讯、网易、搜狐各携自家杀手锏,将中国微博推向真正的肉搏时代。时至今日,中国微博战争的硝烟,已经轰轰烈烈地遍布每个角落。
1529 1
浅谈微博与贴吧!
       微博是一种实时通讯的广播式社交平台。(新浪)微博可以类比QQ的好友动态与微信的朋友圈,只是能看到你的微博动态的“好友”面向全球各地。“微博”起源于美国,起初Twitter创立时的灵感就是源于大众“随时随地发布自己最新情况”的需求,利用互联网实现了。
1548 0