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

 

源码下载地址:

http://06peng.com/blog/read.php?61

 

 

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

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

 

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

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

调用发微博的方法:

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

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

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

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

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值