说明:
1)目前接口还不完善,其他功能接口根据需求慢慢完善。
2)接口输出的数据格式是JSON
3)
若不慎用浏览器访问了下面的请求地址,要回到正常的论坛版面,请将参数styleid=1,切记! 即:
http://bbs.pediy.com?styleid=1
4)客户端登录之后,每次与服务端交互都要携带登录接口返回的cookie
一、通信接口
功能说明
获取论坛的securitytoken。
注意:
1)登录接口会返回securitytoken,每次重新启动app还需要通过getsecuritytoken.php接口重新获得securitytoken。
2)securitytoken在登录后发帖和回帖时候都需要post给服务器。
调用说明
请求方式:get方式
请求地址:http://bbs.pediy.com/getsecuritytoken.php?styleid=12
参数:无
返回结果
返回参数说明:
Name Type Description
securitytoken string 登陆的securitytoken
返回JSON样例
http://bbs.pediy.com/getsecuritytoken.php?styleid=12
游客返回:{"securitytoken":"guest"}
登陆用户返回:{"securitytoken":"1359867494-08bb18b39bb0a502c57c219ea8fbd5ed4ded1222"}
二、登陆、退出论坛
[QUOTEd=1)登陆接口]
功能说明
登陆bbs.pediy.com论坛
post方式。参数说明:
Name Type Description
vb_login_username string 用户名
do:login
cookieuser:1
securitytoken:guest
vb_login_md5password: string 密码的MD5值
vb_login_md5password_utf:
vb_login_md5password值生成方式:
(1). 取出密码中的前后空格 trim()
(2). 对上步结果做一下java方法处理
private String strToEnt(String input) {
String output = "";
for (int i = 0; i < input.length(); i++) {
int ucode = input.codePointAt(i);
String tmp = "";
if (ucode > 255) {
while (ucode >= 1) {
tmp = "0123456789".charAt(ucode%10) + tmp;
ucode /= 10;
}
if (tmp == "") {
tmp = "0";
}
tmp = "#" + tmp;
tmp = "&" + tmp;
tmp = tmp + ";";
output += tmp;
}else {
output += input.charAt(i);
}
}
return output;
}
(3). 对上步所得值进行md5
vb_login_md5password_utf值生方式:
直接去除密码前后空格字符后计算md5
返回结果
登陆成功:
返回参数说明:
Name Type Description
result int 返回0,表示登陆成功
username string 用户名
userid int 用户ID
isavatar int 是否有头像,0没有头像,1有头像
email string 邮箱地址
securitytoken string
返回JSON样例
{"result":0,"username":"小宝"."userid":2,"isavatar":1,"email":"test@pediy.com","securitytoken":"1360055797-c8760f9bb81db38c470ff1eea3cbe33dc4d06692"} 登陆失败:
返回参数说明:
Name Type Description
result int 返回1,表示登陆失败
strikes int 尝试登陆的次数
返回JSON样例
{"result":1,"strikes":2}
论坛提示信息
当strikes<5提示:用户名和密码不对,您已经使用了 5 次登录尝试限制中的 {2} 次。在使用完 5 次尝试机会后,您在 15 分钟内将无法登录。
当strikes>=5提示:错误的用户名或密码。 您已经超出了登录失败限制次数!请等待 15 分钟后重试。
2)退出接口
功能说明
退出论坛
get方式。
需提交cookie
参数:http://bbs.pediy.com/login.php??do=logout&logouthash= (此处为通过getsecuritytoken接口获得的securitytoken)&styleid=12
返回结果
返回参数说明:
Name Type Description
result int 成功退出返回0
返回JSON样例
echo "{\"result\":0}";
[/QUOTEd]
三、用户信息
[QUOTEd=1)取用户的个人资料]
功能说明
获取用户的信息。
调用说明
请求地址:http://bbs.pediy.com/member.php?u=userid&styleid=12
参数:
userid:UNIT 用户ID
返回结果
返回参数说明:
Name Type Description
username string 用户ID
userid int 用户名
usertitle string 用户头衔
posts int 发帖数
languageid int 用户浏览语音
money int 用户金钱数
goodnees int 精华数
avatar int 是否有头像,0无头像,1有头象
avatardateline int 头像上传日期时间戳,如无头像返回0 返回JSON样例
http://bbs.pediy.com/member.php?u=372322&styleid=12 [{'username':'loongzyd','userid':'372322','usertitle':'『新人交流投稿』版主
『CrackMe◇ReverseMe』版主','posts':'865','languageid':'1','money':'1385','goodnees':'10', 'avatar':'1','avatardateline':'1311388471'}]
[/QUOTEd]
四、版面、帖子信息
[QUOTEd=1)取论坛版面列表]
功能说明
获得 论坛首页版面列表
调用说明
请求地址:http://bbs.pediy.com/index.php?styleid=12
登录之后需要提交cookie
返回结果
返回参数说明:
Name Type Description
forumTitle string 论坛区名
forumSubTitle 结构体 论坛版面,有三个参数name,id,imgId
forumSubTitle相关参数说明:
Name Type Description
name string 论坛版面的名称
id int 论坛版面的ID
imgId int 论坛版面图片ID,暂时没有,默认为0
返回JSON样例:
{"forumbits":[{forumTitle:"初学者园地",forumSubTitle:[{name:"『新人交流投稿』",id:131,imgId:0},{name:"『求助问答区』",id:20,imgId:0},{name:"『伴你成长』",id:139,imgId:0}]},{forumTitle:"Windows安全",forumSubTitle:[{name:"『软件调试论坛』",id:4,imgId:0},{name:"『编程技术』",id:41,imgId:0},{name:"『加壳与脱壳』",id:88,imgId:0},{name:"『病毒木马分析』",id:30,imgId:0},{name:"『密码学算法』",id:132,imgId:0},{name:"『CrackMe◇ReverseMe』",id:37,imgId:0},{name:"『外文翻译区』",id:32,imgId:0},{name:"『资源下载』",id:10,imgId:0}]},{forumTitle:"移动平台安全",forumSubTitle:[{name:"『Android 开发』",id:159,imgId:0},{name:"『Android 安全』",id:161,imgId:0},{name:"『iOS安全』",id:166,imgId:0},{name:"『Windows Phone安全』",id:167,imgId:0}]},{forumTitle:"信息安全",forumSubTitle:[{name:"『WEB安全』",id:151,imgId:0},{name:"『漏洞分析预警』",id:150,imgId:0},{name:"『云计算安全』",id:162,imgId:0},{name:"『硬件与通信安全』",id:128,imgId:0}]},{forumTitle:"职场风云",forumSubTitle:[{name:"『招聘专区』",id:47,imgId:0},{name:"『人才资源库』",id:55,imgId:0},{name:"『职业生涯』",id:137,imgId:0}]},{forumTitle:"论坛生活",forumSubTitle:[{name:"『生活放心情』",id:45,imgId:0},{name:"『软件使用』",id:111,imgId:0},{name:"『论坛活动』",id:109,imgId:0}]},{forumTitle:"软件安全图书",forumSubTitle:[{name:"『图书项目版』",id:65,imgId:0}]},{forumTitle:"软件安全图书",forumSubTitle:[]},{forumTitle:"站务管理",forumSubTitle:[{name:"『论坛版务』",id:2,imgId:0},{name:"『回收站』",id:57,imgId:0}]}]}
2)取版面的主题帖列表
功能说明
获得论坛版面的主题帖,主题帖称为thread
调用说明
请求地址:http://bbs.pediy.com/forumdisplay.php?f=forumid?styleid=12
登录之后需要提交cookie
参数说明:
Name Type Description
forumid int 论坛版面ID
返回结果
返回参数说明:
Name Type Description
time int 取主题帖的当前时间戳
pagenav int 这个版面主题帖有多少页(导航条里的最大数)
threadList 结构体 帖子具体信息
threadList 相关参数说明:
Name Type Description
threadtitle string 帖子的标题
threadid int 帖子的ID
postusername string 帖子的作者
postuserid int 帖子作者的ID
avatar int 作者是否有头像,0没有,1有
avatardateline int 作者上传头像的时间戳
lastpostdate int 帖子被回复的时间
views int 帖子的查看数
replycount int 帖子被回复数
globalsticky int 是否全局置顶,全局置顶该字段为-1,否则为0
sticky int 是否置顶帖,置顶帖该字段为1,否则为0
goodnees int 是否为精华帖
0:表示不是精华帖
1:转帖
2:关注
10:优秀
40:精华
80:酷帖
若是工具下载版,该字段含义:
1:收集
10: 利器
30 :独家 返回JSON样例:
http://bbs.pediy.com/forumdisplay.php?f=4?styleid=12
{"time":1359880438,"pagenav":1401,"threadList":[{"threadtitle":"科锐培训,从事逆向工程师培训","threadid":51839,"postusername":"backer","postuserid":8866,"avatar":1,"avatardateline":"1204982702","lastpostdate":"2013-02-01","views":274467,"replycount":718,"globalsticky":-1,"sticky":1,"goodnees":0},{"threadtitle":""麦洛克菲"内核驱动开发培训(三期预告)","threadid":142155,"postusername":"MallocFree","postuserid":463708,"avatar":0,"avatardateline":"0","lastpostdate":"2013-02-02","views":170427,"replycount":153,"globalsticky":-1,"sticky":0,"goodnees":0},{"threadtitle":"【2013礼物】《看雪论坛精华12》发布下载!","threadid":160513,"postusername":"kanxue","postuserid":93,"avatar":1,"avatardateline":"1328408022","lastpostdate":"2013-02-01","views":19799,"replycount":255,"globalsticky":0,"sticky":1,"goodnees":0}]}
3)取版面的主题帖列表
功能说明
获得帖子列表详细信息,单独的帖子称为post
调用说明
请求地址:http://bbs.pediy.com/showthread.php?t=threadid?styleid=12
登录之后需要提交cookie
参数说明:
Name Type Description
threadid int 主题帖的ID
返回结果
返回参数说明:
Name Type Description
time int 取主题帖的当前时间戳
pagenav int 这个版面主题帖有多少页(导航条里的最大数)
postbits 结构体 单个post里详细信息
postbits 结构说明:
Name Type Description
postid int 帖子ID
thumbnail int 是否含有缩略图,暂时没启有,默认为0
username string 帖子作者的用户名
userid int 帖子作者的用户ID
avatar int 帖子作者是否有头像,0没有头像,1有头像
avatardateline int 帖子作者头像的时间戳,如果没头像则为0
posttime string 帖子的时间,格式如:12:13:14
postdate string 帖子的日期,格式如:2013-01-30
title string 帖子的标题内容
message string 帖子的主体内容
thumbnailattachments 结构体 附件
thumbnailattachments 结构说明:
Name Type Description
attachmentid int 附件ID
filename string 附件文件名
filesize int 附件大小
返回JSON样例:
http://bbs.pediy.com/showthread.php?t=161964?styleid=12 {"time":1359885305,"pagenav":0,"postbits":[{"postid":"1139493","thumbnail":0,"username":"kanxue","userid":93,"avatar":"1","avatardateline":"1328408022","posttime":"12:13:14","postdate":"2013-01-30","title":"【测试】附件图片测试2","message":'再次测试~~<br /><img src="http://bbs.pediy.com/attachment.php?attachmentid=76125&thumb=1&d=1359535385"><br />大家好',"thumbnailattachments":[{"attachmentid": "76126","filename": "meigus15.jpg","filesize": "7626"},{"attachmentid": "76128","filename": "W020121221530237405253.jpg","filesize": "5731"}] ,"otherattachments":[,{"attachmentid": "76239","filename": "test.rar","filesize": "53298"}] }]}
[/QUOTEd]
五、发帖、回帖接口
[QUOTEd=1)发帖接口]
功能说明
通过post方式,在论坛发表新的主题帖
http://bbs.peidy.com/newthread.php?styleid=12
需要提交cookie
post参数:
subject: 帖子主题
message: 帖子内容
securitytoken:每次应用启动通过getsecuritytoken
f: 版面id
do:postthread
返回结果
返回参数说明:
(1)发帖成功返回值
Name Type Description
result int 发帖的返回值,成功返回0
threadid int 若发帖成功返回被发主题帖的ID
返回JSON样例:
{"result":0,"threadid":161965} (2)本论坛允许的发表两个帖子的时间间隔必须大于 {1} 秒。请等待 {2} 秒后重试。
Name Type Description
result int 1
floodchecktime int 提示发帖时间间隔是多少秒
flood_wait int 还需要等多少秒发
返回JSON样例:
{"result":1,"floodchecktime":30,"flood_wait":12}
表示:本论坛允许的发表两个帖子的时间间隔必须大于30 秒。请等待12秒后重试。
(3)此帖是您在最后 5 分钟发表的帖子的副本,您将返回该主题。
Name Type Description
result int 2
返回JSON样例:
{"result":2}
(4)发帖少于6个字符返回值
Name Type Description
result int 3
返回JSON样例:
{"result":3}
(5)悬赏金额不足
在『求助问答区』版块,发帖需要消费kx,悬赏金额限制: 10 - 100 Kx,这块论坛没有设接口返回,建议app自行判断用户输入的金额是不是在这个范围。
2)回帖接口
功能说明
通过post方式,完成回帖
http://bbs.pediy.com/newreply.php?styleid=12
需要提交cookie
post参数:
message:回帖内容
t: 帖子id
fromquickreply:1
do:postreply
securitytoken: 每次应用启动通过getsecuritytoken
返回结果
返回参数说明:
(1)发帖成功返回值
Name Type Description
result int 发帖的返回值
threadid int 若发帖成功返回被跟主题帖的ID
result 参数说明:
0:成功
1:本论坛允许的发表两个帖子的时间间隔必须大于10秒。
返回JSON样例:
{"result":0,"threadid":161965} (2)本论坛允许的发表两个帖子的时间间隔必须大于 {1} 秒。请等待 {2} 秒后重试。
Name Type Description
result int 1
floodchecktime int 提示发帖时间间隔是多少秒
flood_wait int 还需要等多少秒发
返回JSON样例:
{"result":1,"floodchecktime":30,"flood_wait":12}
表示:本论坛允许的发表两个帖子的时间间隔必须大于30 秒。请等待12秒后重试。
(3)此帖是您在最后 5 分钟发表的帖子的副本,您将返回该主题。
Name Type Description
result int 2
返回JSON样例:
{"result":2}
(4)发帖少于6个字符返回值
Name Type Description
result int 3
返回JSON样例:
{"result":3}
3)判断论坛版面有没有新的回帖和主题帖
功能说明
判断论坛版面的有没有新的主题帖和回帖
调用说明
请求地址:http://bbs.pediy.com/forumdisplay.php?f=forumid&getnewpost=time&styleid=12
登录用户需要提交cookie
参数说明:
Name Type Description
forumid int 论坛版面ID
time int 时间戳,若主题帖或回帖的时间大于这个时间戳则返回1,否则返回0
返回参数说明:
Name Type Description
result int 无新帖返回0,有新帖返回1
返回JSON样例:
{"result":1}
4)判断某个主题帖有没有新的回帖
功能说明
判断某个主题帖有没有新的回帖
调用说明
http://bbs.pediy.com/showthread.php?t=threadid&styleid=12&getnewpost=time
登录用户需要提交cookie
参数说明:
Name Type Description
threadid int 帖子的ID
time int 时间戳,若回帖的时间大于这个时间戳则返回1,否则返回0
返回参数说明:
Name Type Description
result int 无新帖返回0,有新帖返回1
返回JSON样例:
{"result":1}
5)根据id获取头像图片
http://bbs.pediy.com/image.php?u= (userid)
登录或者非登录状态均不需提交cookie
6)获取附件或者文章中图片
http://bbs.pediy.com/attachment.php?attachmentid= (附件id) &thumb=1&styleid=12
登录状态需提交cookie
7)获取缩略文章的完整内容
http://bbs.pediy.com/showpost.php?styleid=12&p=(帖子id)
登录状态需提交cookie
[/QUOTEd]
六、LBS
功能说明
获取周围附近好友功能。
待续……
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)