android新浪微博

        最近程序用到腾讯微博和新浪微博,腾讯微博sdk还比较清晰,也比较适合直接用源码程序员的习惯,简单明了。

到了新浪微博,头都搞大了,先是找了个1.0授权的,结果一个月时间不到sina就宣布撤销1.0的授权,郁闷死我了,

然后又开始升级2.0授权...结果在各个环节都受到挫折。归根结底还是懒在作怪,连SDK的文档都不看就开始跑测试源码,

碰了一鼻子灰,相信这方面吃亏的人不少。

       闲话少扯步入正题。首先去官网下载android最新sdk压缩包。包文件包括两个工程包com_weibo_android(库文件)

、com_weibo_android_example(测试工程)。

       1、首先导入库文件com_weibo_android,然后右键工程-properties-android进入

        

     

            勾选isLibray点击apply,确定。不了解库文件的先去了解下android库文件。 好这个工程导入完毕,不要运行它。

       2、然后导入测试工程com_weibo_android_example,然后右键工程-properties-android进入

           

     点击apply完成。 ok工程导入完成。


      3、准备完成之后进入测试工程,进入AuthorizeActivity类,其他的没什么好说的,weibo.setRedirectUrl("http://www.sina.com");

这行代码写入回调页,这个是在自己申请的应用信息里面可以查到的。

                  

          其他的按照上面的注释添加就行,至此运行你的应用就可以实现授权了,哦别忘了添加测试账号哦,看上图有个测试账号。

4、因为需求只需要发表微博因此我的应用也只做到了发表微博这一节。其中在发表微博中利用sdk遇到了乱七八糟的问题,

比如不能重复利用accesstoken的问题,资料少没能解决,最后让我放弃了使用sdk发表微博,转而使用sina提供的api文档

             

这里需要什么就直接去查找访问接口了就是了,在这里提供一段代码做掩饰

HttpClient httpclient = BasicUtil.getNewHttpClient();//获取httpclient对象
HttpPost httpPost;

if(thisLarge==null){
StringBuffer request = new StringBuffer();
request.append("source="+getString(R.string.sina_app_consumer_key));//组装http请求字段
request.append("&access_token="+accesstoken);
request.append("&status="+BasicUtil.encodingUtf8(content.getText().toString()));
httpPost = new HttpPost("https://api.weibo.com/2/statuses/update.json");
StringEntity reqEntity;
try {
reqEntity = new StringEntity(request.toString().toString());
reqEntity.setContentType("application/x-www-form-urlencoded");  
httpPost.setEntity(reqEntity);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
MultipartEntity reqEntity = new MultipartEntity();
try {
StringBody source = new StringBody(getString(R.string.sina_app_consumer_key));
StringBody  access_token = new StringBody(accesstoken);
StringBody  status = new StringBody(BasicUtil.encodingUtf8(content.getText().toString()));
reqEntity.addPart("source", source);
reqEntity.addPart("access_token", access_token);
reqEntity.addPart("status", status);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
httpPost = new HttpPost("https://upload.api.weibo.com/2/statuses/upload.json");
FileBody file=null;
String Extensions = thisLarge.substring(thisLarge.lastIndexOf("."));
if(Extensions.equals(".jpg")||Extensions.equals(".jpeg")){
file = new FileBody(new File(thisLarge),"image/jpeg");
reqEntity.addPart("pic", file);
}else if(Extensions.equals(".png")){
file = new FileBody(new File(thisLarge),"image/x-png");
reqEntity.addPart("pic", file);
}else{
Message msg_listData = new Message();
msg_listData.what = Global_ConstantVar.MESSAGETYPE_SUCESS;
reponse = "只能上传jpeg、jpg、png格式的图片!!";
handler.sendMessage(msg_listData);
return;
}
httpPost.setEntity(reqEntity);
}

HttpResponse httpreponse;
try {
httpreponse = httpclient.execute(httpPost);

if (httpreponse.getStatusLine().getStatusCode() == 200) {
Message msg_listData = new Message();
msg_listData.what = Global_ConstantVar.MESSAGETYPE_SUCESS;
reponse = "评论发表成功!!";
handler.sendMessage(msg_listData);
return;
}else{
Message msg_listData = new Message();
msg_listData.what = Global_ConstantVar.MESSAGETYPE_FAIL;
reponse = "新浪微博授权过期,请重新授权!!";
handler.sendMessage(msg_listData);
return;
}
}catch (IOException e) {
// TODO Auto-generated catch block
Log.e("eeeeeeeeeeeee", e.toString());
}
}
if(!isSend2tencent&&!isSend2sina){
reponse = "请选择至少一种分享平台";
Message msg_listData = new Message();
msg_listData.what = Global_ConstantVar.MESSAGETYPE_SUCESS;
handler.sendMessage(msg_listData);
return;
}
Message msg_listData = new Message();
msg_listData.what = Global_ConstantVar.MESSAGETYPE_SUCESS;
handler.sendMessage(msg_listData);
}


至此发表微博就大功告成。


最后提醒几点,在途中你可能遇到httpclient访问不成功的情况,我忘了那个是什么异常了,如果你在测试中遇到问题

可以给我留言。其次expires_in这个字段是新浪返回给你的授权时间精确到秒,超过此时间你得重新授权。

好了新浪微博到此完毕。

           

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值