Chinaunix首页 | 论坛 | 博客
  • 博客访问: 592715
  • 博文数量: 57
  • 博客积分: 877
  • 博客等级: 准尉
  • 技术积分: 1275
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-24 16:16
文章分类

全部博文(57)

文章存档

2014年(2)

2013年(15)

2012年(20)

2011年(20)

我的朋友

分类: Java

2013-02-06 10:49:53

在我们对http的资源进行请求的时候,我们可以通过getpost 这个2种方式

      用get获取信息,所需要提交的内容是体现在url中的,通常的形式是以:  “?”前面是的网址,”?”后面的是提交的内容

 例如:我们在百度中 打入nba,则请求的url 就为: ,它所提交的内容在url中时可见的。而用post方式提交呢,它提交的内容我们是不可见的。如果我们要写一个自动post 表单数据的程序,那我们就得先知道发送这个post请求需要那些数据选项。

例如 : 是一个查询的页面,我们通过浏览器的开发者工具(按F12)来查看该页面html


可以看到这里提交表单的方式是用post

现在我们通过浏览器输入查询的身份证号码和姓名,提交之后,我们就可以在开发者工具里查看psot 表单的数据内容了!



从上图可以得出我们需要提交的post 内容有 _viewstate,_eventvalidation,tbx_pername,tbx_pidcard,tbx_bankAccout,btn_Querry这几项内容

   知道了这些,我们就可以通过程序来自动完成post请求了

   我是通过httpclient这个组件来完成的,HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的编程工具包,网上有很多关于它的介绍,有兴趣的可以自己去了解。以下就是实现的代码(记得把httpclient的lib文件里的jar文件导入到你的工程项目中区)

import java.io.*;
import java.sql.*;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.http.*;

public class httpclient {

public static void post_comment(String pdcode,String psname,String id,HttpClient httpclient) throws Exception{

		        try {
		        	//构造一个post对象
		         HttpPost httpPost = new HttpPost("");
		         //添加所需要的post内容
		         List nvps = new ArrayList();
		         nvps.add(new BasicNameValuePair("__VIEWSTATE", "/wEPDwUKMTI3ODgyMTE1M2RkYvz2pJOChArFWd3j+6npOZr96OI="));
		         nvps.add(new BasicNameValuePair("__EVENTVALIDATION", "/wEWBQLzxcLpBgL3n9/ACwLuubGjBgKs9/TJDwLvjry/BYt++cnimkGWb2qATgw5QzGksEj8"));
		         nvps.add(new BasicNameValuePair("tbx_pername", psname));
		         nvps.add(new BasicNameValuePair("tbx_PidCard", pdcode));
		         nvps.add(new BasicNameValuePair("tbx_bankAccount", ""));
		         nvps.add(new BasicNameValuePair("btnQuery", "查询"));
		         

		         httpPost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));

		         HttpResponse response = httpclient.execute(httpPost);

		         HttpEntity entity = response.getEntity();
		        // EntityUtils.consume(entity);
		        String Filename = "e:\\gjj\\"+ id+".txt";
		        
		        createNewFile(Filename,EntityUtils.toString(entity))

		        }        
		        finally {
		        	System.out.println("ok!"); 
		        }     
		
		 }
   
  public static void main(String[] args) throws Exception {

HttpClient httpclient =new DefaultHttpClient();
post_comment(“330621xxxxxxxxxxxx”,"张三","test",httpclient);
httpclient.getConnectionManager().shutdown();

}
}


阅读(21871) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~