Androd学习笔记——新浪微博Android SDK——如何打印出5位错误码

时间:2022-09-04 10:23:30

  新浪微博是我最早写入到项目中去的,利用的是它Java SDK。但是最近整理各个SDK的时候发现——新浪微博对新应用要求使用OAuth2.0,所以我只能利用它的Android SDK重新写入到程序中。其实改写程序还是比较简单的,只要根据它的Sample程序进行修改就行了。但是这个过程中碰到了一个问题。

  问题描述:获得Access Token之后,进行图文微博的发送,但是每次只有第一次发送成功,获得Log信息:“{"created_at":"Wed Mar 21 11:12:52 +0800……”。但是接下来我继续发送的话,却得到:“com.weibo.net.WeiboException: HTTP/1.1 400 ”。我在新浪论坛问了一下,版主要求我提供5位错误码。我表示一头雾水,难道要我进行抓包。。。

  问题解决:其实我们仔细观察会发现,其实我们两次得到的Log信息其实是不一样的。至少第二次也应该是:“{……}”的。所以我就怀疑是SDK内部写错。经过我的调试,最后我们的办法是:

  在SDK的Utility.java的第335行:throw new WeiboException(String.format(status.toString()), statusCode);
改成:throw new WeiboException(result, statusCode);估计是作者在编写时的一个失误。


  然后在你的程序中输出错误信息就可以了:

 1 weiboRunner.request(AAuthTestActivity.this, url, bundle, Utility.HTTPMETHOD_POST, new  com.weibo.net.AsyncWeiboRunner.RequestListener(){
2
3 @Override
4 public void onComplete(String arg0) {
5 // TODO Auto-generated method stub
6 Log.e("sina_complete",arg0.toString());
7 }
8
9 @Override
10 public void onError(WeiboException arg0) {
11 // TODO Auto-generated method stub
12 Log.e("sina_error",arg0.toString());

13 }
14
15 @Override
16 public void onIOException(IOException arg0) {
17 // TODO Auto-generated method stub
18 Log.e("sina_IOException",arg0.toString());
19 }
20
21 });

 

  我的输出信息是:{"error":"repeat content!","error_code":20019,"request":"/2/statuses/upload.json"}。这样你就可以在http://open.weibo.com/wiki/Help/error 找到你的错误原因了。

  希望对大家有帮助!