Java 实现对Discuz 论坛登录 ()

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 需要引入这些包。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值