http://zhuanti.cbrc.gov.cn/licence/confirm.jsp?queryId=7 这里有简单验证码 , 不过是文本的 , 很容易得到

解决方案 »

  1.   

    为啥不明白楼主意思呢、??
    保存session。。直接session.setAttribut()不就可以了??模拟post是什么意思?
      

  2.   

    给你写了示范例子:import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;import org.apache.commons.httpclient.Header;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.methods.PostMethod;public class HttpTest {
    static final String URL="http://zhuanti.cbrc.gov.cn/licence/confirm.jsp";
    static final String URL2="http://zhuanti.cbrc.gov.cn/licence/view_detail.jsp";
    static final String ID="9";

    /**
     * @param args
     * @throws IOException 
     * @throws HttpException 
     */
    public static void main(String[] args) throws HttpException, IOException {
    HttpClient client = new HttpClient();

    String temp=URL+"?queryId=7";
    GetMethod get=new GetMethod(temp);

    client.executeMethod(get);
    Header[] headers=get.getResponseHeaders(); String sessionid=null;
    for (Header h:headers){
    //Session Id就放在这里!
    if (h.getName().equals("Set-Cookie")){
    sessionid=getSessionId(h.getValue());
    }
    } String html=get.getResponseBodyAsString();
    System.out.println(html);
    String validCode=findValidCode(html);

    PostMethod post=new PostMethod(URL2); System.out.println("设置validCode:"+validCode);
    post.setParameter("confirmCode", validCode);
    System.out.println("设置id:"+ID);
    post.setParameter("id", ID);

    //这样设置Session ID
    System.out.println("设置Cookie:"+sessionid);
    post.setRequestHeader("Cookie", sessionid);

    client.executeMethod(post);

    temp=post.getResponseBodyAsString();
    System.out.println(temp);

    }
    static Pattern p=Pattern.compile("-->\\d{4}");
    static Pattern p2=Pattern.compile("JSESSIONID=[0-9a-zA-Z\\-!]*");
    public static String getSessionId(String str){
    Matcher m=p2.matcher(str);
    String temp=null;
    if (m.find()){
    temp=m.group();
    }
    return temp;
    }
    public static String findValidCode(String html){
    Matcher m=p.matcher(html);

    String temp=null;
    if (m.find()){
    temp=m.group();
    temp=temp.substring(3);
    }
    return temp;
    }
    }