有时候作为非官方开发的APP集成了官方的所有信息,但是现在需要实现另一个功能那就是登录发表评论到官方的网站,而非官方的APP并不知道官方网站是怎么实现登录与评论的,而且越大型的网站,为了防止这样的事情发生,增加了许许多多阻碍,不过我们这里可以给大家提供一个通用的方式,就是有点费时,不过按照此方法,基本所有的网站都不在话下。今天就拿CSDN做一下试验。
1.登录CSDN
查看其源代码看看其form表单:
其难点在post data数据中it的value与execution的value,其为随机产生,这估计是CSDN防止恶意登录设置的动态标识,不过你可以在Android 中先获取该值然后设置到需要提交的表单项中。
下面使用xutils与Jsoup获取网页属性:
RequestParams params = new RequestParams("https://passport.csdn.net/account/login?ref=toolbar");
params.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko");
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.i("csdn", "onSuccess");
RequestParams params1=new RequestParams("https://passport.csdn.net/account/login?ref=toolbar");
params1.setHeader("Accept","text/html, application/xhtml+xml, **");
requestParams.setHeader("Content-Type", "application/x-www-form-urlencoded");
requestParams.setHeader("X-Requested-With", "XMLHttpRequest");
requestParams.setHeader("Connection", "Keep-Alive");
requestParams.setMultipart(true);
requestParams.addQueryStringParameter("id", "50581207");
requestParams.addParameter("commentid", " ");
requestParams.addParameter("content", " 太喜欢这篇博文了。。 98 ");
requestParams.addParameter("replyId", " ");
setHttpContent(requestParams);
当然这里面的数据有的并不需要,为了测试我按照HttpWatch中给的设置的:
然后在调用post请求:
public void setHttpContent(RequestParams params){
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.i("liyuanjinglyj", "onSuccess");
System.out.println(result.toString());
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
ex.printStackTrace();
Log.i("liyuanjinglyj", "onError");
}
@Override
public void onCancelled(CancelledException cex) {
Log.i("liyuanjinglyj", "onCancelled");
}
@Override
public void onFinished() {
Log.i("liyuanjinglyj", "onFinished");
}
});
}
将输出如下日志信息:
其返回1代表成功,返回0代表失败,唯一需要说明的是我设置的超时时间是15秒,为什么设置这么长时间,想必大家比我清楚,CSDN在网页评论都需要这么长时间,何况手机端呢。
在看看网页效果:
多的一个是测试中超时报错发表上去的。
这篇文章只是模拟的登录与评论CSDN,其他网站与这差不多。
您可能感兴趣的文章:Android实现朋友圈评论回复列表Android评论功能的实现过程Android 仿微信朋友圈点赞和评论弹出框功能Android实现评论栏随Recyclerview滑动左右移动Android 仿今日头条评论时键盘自动弹出的效果(推荐)Android 仿抖音的评论列表的UI和效果的实现代码Android中使用PopupWindow 仿微信点赞和评论弹出Android评论图片可移动顺序选择器(推荐)Android仿微信朋友圈点击评论自动定位到相关行功能Android如何实现社交应用中的评论与回复功能详解