抓取网页 如何模拟post , 如何保存session http://zhuanti.cbrc.gov.cn/licence/confirm.jsp?queryId=7 这里有简单验证码 , 不过是文本的 , 很容易得到 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为啥不明白楼主意思呢、??保存session。。直接session.setAttribut()不就可以了??模拟post是什么意思? 给你写了示范例子: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; }} java Canvas已经添加到JFrame里 但不知道如何在Canvas上输入字体 一个小问题,HELP!!HELP!!HELP!! Java Csv文件处理(原创幻冰呵呵也就是本人) paint这个函数什么时候被调用 关于进度条和线程?(一定要帮忙,绝对给高分) 关于用itext创建pdf时候的坐标问题 怎么读到数组? 错在哪里?(getAttribute) 我想问一下,为什么java中的main非要String argv这个参数,在C中是可选的吧 spring boot 邮件功能报错 用的是build.gradle httpclient4.0 hashmap如何排序
保存session。。直接session.setAttribut()不就可以了??模拟post是什么意思?
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;
}
}