SYSU ARGO BBS API
Java
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
libs
res
src/edu/sysubbs/argoandroid
.classpath
.gitignore
.project
AndroidManifest.xml
README.md
ic_launcher-web.png
lint.xml
project.properties

README.md

argo_android_sdk

这个是argo的android版SDK,按照这里的描述编写

使用说明

下载好之后,导入进eclipse里面,然后作为你的android application project的一个依赖即可

基本object说明

API说明一样,SDK也有几个基本的object,在/src/edu/sysubbs/argoandroid/argoobject包下,和API说明里面的 object意义大致相同,这些object有以下这些(有比较不同的意义的object会附有说明):

SDK使用说明

所有的请求都通过/src/edu/sysubbs/argoandroid/argoservices包下各个模块的services实现,比如说,你要登录,可以通过 UserCookieService来实现:

  UserCookieService cookieService = new UserCookieService();
  try {
		String cookie = cookieService.loginAndGetCookie(Constant.testUsername, Constant.testPasswd);		
	} catch (ErrorException e) {
    // TODO Auto-generated catch block
		Log.d(Constant.LOG_TAG, e.msg);
		e.printStackTrace();
	}

loginAndGetCookie方法会返回cookie给你,由于argo在登录之后使用cookie来验证身份,因此在某些service的方法里面,会要求 传入cookie,因此cookie应该预先保存好。

其他模块的service也是大致按照这个方法使用,返回值根据请求的不同而有所不同,有些会返回一个argoobjectArrayList, 有些则单单返回一个argoobject,另外一些则返回true or false

例如这是获取所有板块信息(按照讨论区组织)的代码:

  ArgoBoardService boardService = new ArgoBoardService();
  try {
		ArrayList<ArgoSectionBoards> sectionBoardsList = boardService.getAllBoardInfo();
			
		Log.d(Constant.LOG_TAG, "sectionBoardsList.size = " + sectionBoardsList.size());
		Log.d(Constant.LOG_TAG, "sectionBoardsList[0].sectionCode = " + sectionBoardsList.get(0).section.sectionCode);
		Log.d(Constant.LOG_TAG, "sectionBoardsList[0].boardList.size = " + sectionBoardsList.get(0).boardList.size());
	} catch (ErrorException e) {
		// TODO Auto-generated catch block
		Log.d(Constant.LOG_TAG, e.msg);
		e.printStackTrace();
	}

这是查询某个板块信息的代码:

  ArgoBoardService boardService = new ArgoBoardService();
  	
	try {
		ArgoBoard board = boardService.getBoardInfo("water");
		Log.d(Constant.LOG_TAG, "board.boardname = " + board.boardname);
		Log.d(Constant.LOG_TAG, "board.BM[0] = " + board.BM.get(0));
	} catch (ErrorException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

这是清除某个板块未读标记的代码:

  UserCookieService cookieService = new UserCookieService();
  try {
		String cookie = cookieService.loginAndGetCookie(Constant.testUsername, Constant.testPasswd);
		ArgoBoardService boardService = new ArgoBoardService();
		Log.d(Constant.LOG_TAG, "cookie = " + cookie);
		boolean success = boardService.cleanBoardUnread(cookie, "linux");
		assertEquals(true, success);

	} catch (ErrorException e) {
		// TODO Auto-generated catch block
		Log.d(Constant.LOG_TAG, e.msg);
		e.printStackTrace();
	}

其他的services的使用方式也大致相同。

BUGS

  • mail/del API接口调用出错,目前未解决

关于ErrorException

几乎所有的services方法都会抛出此异常,一个ErrorException对象包含一个msgerrorCode变量,msg是值错误的 信息,而errorCode是指错误码,具体可看错误码对照表,而在ErrorCode这个类里面,提供了一个快速的比对 (尚未完成)

如果有任何问题,欢迎在issue中提出