java webでHttpClientシミュレーションブラウザにログインしてから要求を開始します。

3954 ワード

HttpClientブラウザ登録後に要求を開始する。
ブラウザがこの効果を実現するには、次のステップが必要です。
    1ログインが必要なページまたはリソースを要求します。
    2サーバは、現在のセッションにログイン情報が含まれているかどうかを判断する。ログインしていない場合はログインページにリダイレクトします。
    3マニュアルで登録ページに正しい口座情報を入力して提出します。
    4サーバは登録情報が正しいかどうかを判断し、正しい場合はログイン成功情報をセッションに保存する。
    5ログイン成功後、サーバ側がブラウザにセッションを返すSessionID情報をクライアントのCookieに保存する。
    6ブラウザは自動的に前の要求アドレスにジャンプし、前のCookieを携帯する(ログイン成功のSession IDを含む)
    7サーバ側は、セッションに成功登録情報があるかどうかを判断し、ある場合は要求されたリソースをブラウザにフィードバックする。

package com.artsoft.demo;

import java.io.FileOutputStream; 
 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.CookieStore; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.impl.conn.PoolingClientConnectionManager; 
import org.apache.http.util.EntityUtils; 
 
/** 
 * TODO(            ) 
 * 
 * @title: HttpClientDemo.java 
 * @author zhangjinshan-ghq 
 * @date 2014-6-11 14:59:04 
 */ 
 
public class HttpClientDemo 
{ 
 
  /** 
   * The main method. 
   * 
   * @param args the arguments 
   * @throws Exception the exception 
   */ 
  public static void main(String[] args) throws Exception 
  { 
    getResoucesByLoginCookies(); 
  } 
 
  /** 
   *     Cookie     
   *         ,         
   * 
   * @throws Exception 
   */ 
  private static void getResoucesByLoginCookies() throws Exception 
  { 
    HttpClientDemo demo = new HttpClientDemo(); 
    String username = "......";//      
    String password = "......";//      
 
    //           
    String urlLogin = "http://hx.buscoming.cn/Api/Security/Logon?UserCode=" + username + "&Password=" + password; 
 
    //                              iteye Blog   
    String urlAfter = "http://hx.buscoming.cn/Api/Security/GetLoginAccount";
 
    DefaultHttpClient client = new DefaultHttpClient(new PoolingClientConnectionManager()); 
 
    /** 
     *             cookie 
     *             ,   URL      , 
     *                HttpClient        
     *       
     */ 
    HttpPost post = new HttpPost(urlLogin); 
    HttpResponse response = client.execute(post); 
    HttpEntity entity = response.getEntity(); 
    CookieStore cookieStore = client.getCookieStore(); 
    client.setCookieStore(cookieStore); 
 
    /** 
     *       cookie       ,            url 
     *       iteye     ,      ,       【  XXXX】 
     * 
     */ 
    HttpGet get = new HttpGet(urlAfter); 
    response = client.execute(get); 
    entity = response.getEntity(); 
 
    /** 
     *                 myindex.html,                  
     */ 
 
    String pathName = "d:\\index.html"; 
    writeHTMLtoFile(entity, pathName); 
  } 
 
  /** 
   * Write htmL to file. 
   *                      .html  ,                  
   * 
   * @param entity the entity 
   * @param pathName the path name 
   * @throws Exception the exception 
   */ 
  public static void writeHTMLtoFile(HttpEntity entity, String pathName) throws Exception 
  { 
 
    byte[] bytes = new byte[(int) entity.getContentLength()]; 
 
    FileOutputStream fos = new FileOutputStream(pathName); 
 
    bytes = EntityUtils.toByteArray(entity); 
 
    fos.write(bytes); 
 
    fos.flush(); 
 
    fos.close(); 
  } 
 
} 

 読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。