Java 实现对Discuz 论坛登录 ()

来源:互联网 发布:淘宝的市场定位 编辑:程序博客网 时间:2024/04/28 21:32

Java 实现对Discuz 论坛登录 ()



我们先来看看Discuz  论坛登录需要的参数, 通过浏览器的调试模式可以得出。




从图中看到POST 提交 登录参数。  头部信息 mod : logging   以及  表单信息Form Data。


那么登录参数代码就来了。
<pre name="code" class="java">/** * 客户端登录的方法 * @param client   * @param uname 用户名 * @param passwd  密码         * @param url 论坛地址 * @return */public  static boolean Login(HttpClient client,String uname,String passwd,String url){HttpClient httpClient = client;HttpPost httpPost=new HttpPost(url+"/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1");List params=new ArrayList<Object>();params.add(new BasicNameValuePair("username",uname));params.add(new BasicNameValuePair("password",passwd)); String ans = null;try {    httpPost.setEntity(new UrlEncodedFormEntity( params, "UTF-8"));     HttpResponse response=httpClient.execute(httpPost);    HttpEntity entity=response.getEntity();     ans=EntityUtils.toString(entity);// System.out.println(ans);     if((ans.lastIndexOf(url+"/./")) !=-1){     //获取用户的一些信息     HttpGet getD=new HttpGet(url+"/"); response = httpClient.execute(getD); entity=response.getEntity(); ans=EntityUtils.toString(entity,"GBK"); UkUser.uname =uname;UkUser.discuz_uid=ans.substring(ans.lastIndexOf("discuz_uid = '")+14, ans.lastIndexOf("', cookiepre"));UkUser.formhash=ans.substring(ans.lastIndexOf("formhash=")+9,ans.lastIndexOf("formhash=")+17);return true;     }}catch (Exception e){ e.printStackTrace(); return false;}return false;}


 这里需要抓取 discuz_uid  为用户的ID  以及登录后分配的一个formhash


n那么我们来看看主函数

public static void main(String[] args){HttpClient httpClient = new DefaultHttpClient();if(login(httpClinet,name,passwd,url)){System.out.println("登录成功");}else {System.out.printlin("登录失败");}}

Ok ,这里需要用到org.apache包, 在Android 中应该是自带了。 纯Java 需要引入这些包。

jar 下载地址



0 0
原创粉丝点击