用代码获取cas服务器的ticket

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.client.ClientProtocolException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * @author 孙林伟 
 * 用代码获取ticket
 * 
 */
public class CasTest {

	
	
	/**
	 * @param args
	 * @throws IOException 
	 * @throws ClientProtocolException 
	 */
	public static void main(String[] args) throws ClientProtocolException, IOException {

		String[] ltAndEventId = getLtAndEventId("http://localhost:8080/tecoa");
		String url = "https://localhost" + ltAndEventId[2];
		HashMap<String, Object> param = new HashMap<String, Object>();
		param.put("username", "gaohan");
		param.put("password", "888888");
		param.put("lt", ltAndEventId[0]);
		param.put("_eventId", ltAndEventId[1]);
		System.out.println(getHttpString(url, param));
		
		
	}
	
	public static String getHttpString(String url , Map<String,Object> param) throws IOException {
	      //创建http连接
	      HttpClient client = new HttpClient();
	      //创建post请求
	      PostMethod post = new PostMethod(url);
	      if(param != null && param.size() > 0){
	    	  for (Map.Entry<String,Object> entry : param.entrySet()) {
		          //添加参数
		          post.addParameter(entry.getKey(), entry.getValue().toString());
		      }
	      }
	      //设置编码
	      HttpMethodParams methodParams = post.getParams();
	      methodParams.setContentCharset("UTF-8");
	      //执行请求
	      @SuppressWarnings("unused")
		  int state = client.executeMethod(post);
	      post.getResponseBody();
	      post.getResponseHeaders();
	      String responseStr = post.getResponseHeader("Location").getValue();
		  String ticketId = responseStr.substring(responseStr.indexOf("ticket")+7);
	      
	      return ticketId;
	  }
	
	public static String[] getLtAndEventId(String url) throws IOException{
		Document doc = Jsoup.connect(url).get();
		Elements inputs = doc.getElementsByTag("input");
		String lt = "",_eventId = "",action = "";
		for(Element input : inputs){
			if("lt".equals(input.attr("name"))){
				lt = input.val();
			}
			if("_eventId".equals(input.attr("name"))){
				_eventId = input.val();
			}
		}
		Element form = doc.getElementById("fm1");
		action = form.attr("action");
		return new String[]{lt,_eventId,action};
	}
}


你可能感兴趣的:(cas)