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

本文提供了一套使用Java实现的腾讯微博API示例代码,包括如何发布文字和图文微博,以及获取用户及其关注者的最新微博消息等功能。代码通过OAuth鉴权确保安全性。

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值