JAVA程序通过后台登陆网站,获取Session,然后再POST Http Request添加数据到数据库的实例
来源:互联网 发布:查看手机端口号 编辑:程序博客网 时间:2024/05/03 03:16
* 1,在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie,
* 简单的讲,当浏览器向服务器发送Http请求的时候, HTTP服务器会产生一个SessionID,这个SessionID就唯一的标识了一个客户端到服务器的请求会话过程.
* 就如同一次会议开始时,主办方给每位到场的嘉宾一个临时的编号胸牌一样, 可以通过这个编号记录每个嘉宾(客户端)的活动(请求状态).
* 为了保持这个状态, 当服务端向客户端回应的时候,会附带Cookie信息,当然,Cookie里面就包含了SessionID
* 客户端在执行一系列操作时向服务端发送请求时,也会带上这个SessionID, 一般来说,Session也是一个URL QueryParameter ,就是说,session可以以Key-Value的形式通过URL传递
* 比如,http://www.51etest.com/dede/login.php?PHPSESSIONID=7dg3dsf19SDf73wqc32fdsf
* 一般而言,浏览器会自动把此Session信息放入Header报文体中进行传递.
* 如果浏览器不支持Cookie,那么,浏览器会自动把SessionID附加到URL中去.
*
* 2,在这个例子中,以登陆这个功能点进行讲解.
* 首先,我们登陆的页面是http://www.51etest.com/dede, 我们第一次访问这个页面后,可以从服务器过来的Http Response报文中的Header中找出服务器与浏览器向关联的数据 -- Cookie,
* 而且Session的值也在Cookie中. 于是,我们可以通过分析Set-Cookie这个Header中的参数的值,找到Seesion的Key-Value段.
* 然后,我们再向服务器发送请求,请求URL为:post@@http://www.51etest.com/dede/login.php@@userid=admin&pwd=tidus2005&gotopage=/dede/&dopost=login
* 服务器验证登陆成功了, 并且在此次会话变量中增加了我们登陆成功的标识.
*
* 3,增加一个广告定义
* 增加一个广告定义其实就是一个添加数据的过程,无非是我们把我们要添加的数据通过参数的形式告诉指定url页面,页面获取后添加到数据库去而已.
* 此url地址为:
* post@@http://www.51etest.com/dede/ad_add.php@@dopost=save&tagname=test&typeid=0&adname=test&starttime=2008-05-29
* 因为这个页面会先判断我是否登陆
* 而判断的依据,前面讲了,就是根据我请求时的SessionID找到指定的Session数据区中是否存在我的登陆信息,
* 所以我当然要把访问登陆页面时获取的SessionID原封不动的再发回去
* 相当于对服务器说,这是我刚刚来时,你发我的临时身份证,我现在可以形势我的权利。
*
* 这就是整个Java后台登陆网站,然后添加数据的过程。
- package cn.javadr.product;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Map.Entry;
- /**
- * HttpClient
- *
- * @author Tang Ren email: <a
- * href="mailto:tangren1206@163.com">tangren1206@163.com</a>
- *
- * <A href="mailto:post@@http://www.51etest.com/dede/login.php@@userid=xxxx&pwd=xxxxxx&gotopage=/dede/&dopost=login">post@@http://www.51etest.com/dede/login.php@@userid=xxxx&pwd=xxxxxx&gotopage=/dede/&dopost=login
- </A> *
- * post@@http://www.51etest.com/dede/ad_add.php@@dopost=save&tagname=test&typeid=0&adname=test&starttime=2008-05-29
- * 20:58:25&endtime=2008-06-28 20:58:25×et=0&normbody=test&expbody=test
- *
- */
- /**
- *
- */
- public class HttpClient {
- private static final String USER_AGENT_VALUE = "Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)";
- /**
- * Cmd splitor default is symbol '$$'.
- */
- private static final String HTTP_CLIENT_CMD_SPLITOR = "@@";
- /**
- * Post parameter splitor default is symbol '&'.
- */
- private static final String POST_PARAMETER_SPLITOR = "&";
- private static final String POST_PARAMETER_KV_SPLITOR = "=";
- private String cookie = null;
- private Map cookieMap = new HashMap();
- public static void main(String[] args) {
- HttpClient client = new HttpClient();
- }
- public HttpClient() {
- // Input http request url
- BufferedReader consleReader = new BufferedReader(new InputStreamReader(
- System.in));
- String httpResponse = null;
- String url = null;
- String cmd = null;
- String method = null;
- try {
- while (true) {
- cmd = consleReader.readLine();
- if (cmd.indexOf(HTTP_CLIENT_CMD_SPLITOR) == -1)
- continue;
- method = cmd.split(HTTP_CLIENT_CMD_SPLITOR)[0];
- url = cmd.split(HTTP_CLIENT_CMD_SPLITOR)[1];
- if (method.toUpperCase().equals("GET")) {
- httpResponse = this.getMethod(url, true);
- } else if (method.toUpperCase().equals("POST")) {
- Map parameters = this.parsePostParameters(cmd
- .split(HTTP_CLIENT_CMD_SPLITOR)[2]);
- httpResponse = this.postMethod(url, parameters, true);
- }
- System.out.println(httpResponse);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- consleReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * Request specifid url with 'GET' method. And return HTTP response content.
- *
- * @param url
- * @return
- */
- private String getMethod(String url, boolean keepCookie) {
- if (url == null || url.length() == 0) {
- return "Requst url could not be null or empty.";
- }
- StringBuffer result = new StringBuffer();
- try {
- HttpURLConnection httpURLConnection = this.getHttpURLConnection(
- url, keepCookie);
- // Set request properties.
- this.settingHttpRequestHeader(httpURLConnection);
- httpURLConnection.setRequestMethod("GET");
- // Getting or setting cookie
- this.gettingOrSettingCookie(httpURLConnection, keepCookie);
- InputStream httpInputStream = httpURLConnection.getInputStream();
- BufferedReader httpBufferedReader = new BufferedReader(
- new InputStreamReader(httpInputStream, "GBK"));
- result.append(this.readBufferedContent(httpBufferedReader));
- // Connect to host.
- httpURLConnection.connect();
- } catch (IOException e) {
- e.printStackTrace();
- return "getHttpURLConnection failed.";
- }
- return result.toString();
- }
- public String postMethod(String url, Map parameters, boolean keepCookie) {
- StringBuffer httpResponse = new StringBuffer();
- HttpURLConnection httpURLConnection = null;
- OutputStream httpOutputStream = null;
- try {
- httpURLConnection = this.getHttpURLConnection(url, keepCookie);
- // Set request properties.
- this.settingHttpRequestHeader(httpURLConnection);
- // Set request method with 'POST'
- httpURLConnection.setRequestMethod("POST");
- // Set connection output is true.
- httpURLConnection.setDoOutput(true);
- // Getting or setting cookie
- this.gettingOrSettingCookie(httpURLConnection, keepCookie);
- // Get Http output stream
- httpOutputStream = httpURLConnection.getOutputStream();
- // Build post parameters string
- StringBuffer postParams = new StringBuffer();
- int index = 0;
- for (Iterator<Entry> iter = parameters.entrySet().iterator(); iter
- .hasNext(); index++) {
- Entry<String, String> entry = iter.next();
- postParams.append(index != 0 ? "&" : "");
- postParams.append(entry.getKey());
- postParams.append("=");
- postParams.append(entry.getValue());
- }
- httpOutputStream.write(postParams.toString().getBytes());
- BufferedReader httpBufferedReader = new BufferedReader(
- new InputStreamReader(httpURLConnection.getInputStream()));
- httpResponse.append(this.readBufferedContent(httpBufferedReader));
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- } finally {
- try {
- httpOutputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return httpResponse.toString();
- }
- /**
- * Setting HTTP request header properties
- *
- * @param httpURLConnection
- */
- private void settingHttpRequestHeader(HttpURLConnection httpURLConnection) {
- if (httpURLConnection == null)
- return;
- httpURLConnection.setRequestProperty("User-Agent", USER_AGENT_VALUE);
- // TODO setting some other properties here . . .
- }
- /**
- * Get HttpURLConnection by specified url string.
- *
- * @param url
- * @return
- * @throws IOException
- */
- private HttpURLConnection getHttpURLConnection(String url,
- boolean keepCookie) throws IOException {
- URL urlObj = new URL(url);
- URLConnection urlConnection = urlObj.openConnection();
- if (urlConnection instanceof HttpURLConnection)
- return (HttpURLConnection) urlConnection;
- throw new MalformedURLException();
- }
- /**
- * Read bufferedReader buffered content.
- *
- * @param bufferedReader
- * @return
- */
- private String readBufferedContent(BufferedReader bufferedReader) {
- if (bufferedReader == null)
- return null;
- StringBuffer result = new StringBuffer();
- String line = null;
- try {
- while ((line = bufferedReader.readLine()) != null) {
- result.append(line);
- }
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- return result.toString();
- }
- /**
- * Parse and create parameter map with parameter string
- *
- * @param parameterString
- * @return
- */
- private Map parsePostParameters(String parameterString) {
- if (parameterString == null || parameterString.length() == 0)
- return null;
- Map result = new HashMap<String, String>();
- // only one parameter key-value pair
- if (parameterString.indexOf(POST_PARAMETER_SPLITOR) == -1) {
- if (parameterString.indexOf(POST_PARAMETER_KV_SPLITOR) != -1)
- result.put(parameterString.split(POST_PARAMETER_KV_SPLITOR)[0],
- parameterString.split(POST_PARAMETER_KV_SPLITOR)[1]);
- } else {
- String[] keyValues = parameterString.split(POST_PARAMETER_SPLITOR);
- for (int i = 0; i < keyValues.length; i++) {
- String keyValue = keyValues[i];
- result.put(keyValue.split(POST_PARAMETER_KV_SPLITOR)[0],
- keyValue.split(POST_PARAMETER_KV_SPLITOR)[1]);
- }
- }
- return result;
- }
- /**
- * Get or set cookie.
- *
- * @param httpURLConnection
- * @param keepCookie
- */
- private void gettingOrSettingCookie(HttpURLConnection httpURLConnection,
- boolean keepCookie) {
- // Getting or setting cookie.
- if (cookie == null || cookie.length() == 0) {
- String setCookie = httpURLConnection.getHeaderField("Set-Cookie");
- cookie = setCookie.substring(0, setCookie.indexOf(";"));
- } else if (keepCookie) {
- httpURLConnection.setRequestProperty("Cookie", cookie);
- }
- }
- }
package cn.javadr.product;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;/** * HttpClient * * @author Tang Ren email: <a * href="mailto:tangren1206@163.com">tangren1206@163.com</a> * * post@@http://www.51etest.com/dede/login.php@@userid=xxxx&pwd=xxxxxx&gotopage=/dede/&dopost=login * * post@@http://www.51etest.com/dede/ad_add.php@@dopost=save&tagname=test&typeid=0&adname=test&starttime=2008-05-29 * 20:58:25&endtime=2008-06-28 20:58:25×et=0&normbody=test&expbody=test * *//** * */public class HttpClient {private static final String USER_AGENT_VALUE = "Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)";/** * Cmd splitor default is symbol '$'. */private static final String HTTP_CLIENT_CMD_SPLITOR = "@@";/** * Post parameter splitor default is symbol '&'. */private static final String POST_PARAMETER_SPLITOR = "&";private static final String POST_PARAMETER_KV_SPLITOR = "=";private String cookie = null;private Map cookieMap = new HashMap();public static void main(String[] args) {HttpClient client = new HttpClient();}public HttpClient() {// Input http request urlBufferedReader consleReader = new BufferedReader(new InputStreamReader(System.in));String httpResponse = null;String url = null;String cmd = null;String method = null;try {while (true) {cmd = consleReader.readLine();if (cmd.indexOf(HTTP_CLIENT_CMD_SPLITOR) == -1)continue;method = cmd.split(HTTP_CLIENT_CMD_SPLITOR)[0];url = cmd.split(HTTP_CLIENT_CMD_SPLITOR)[1];if (method.toUpperCase().equals("GET")) {httpResponse = this.getMethod(url, true);} else if (method.toUpperCase().equals("POST")) {Map parameters = this.parsePostParameters(cmd.split(HTTP_CLIENT_CMD_SPLITOR)[2]);httpResponse = this.postMethod(url, parameters, true);}System.out.println(httpResponse);}} catch (IOException e) {e.printStackTrace();} finally {try {consleReader.close();} catch (IOException e) {e.printStackTrace();}}}/** * Request specifid url with 'GET' method. And return HTTP response content. * * @param url * @return */private String getMethod(String url, boolean keepCookie) {if (url == null || url.length() == 0) {return "Requst url could not be null or empty.";}StringBuffer result = new StringBuffer();try {HttpURLConnection httpURLConnection = this.getHttpURLConnection(url, keepCookie);// Set request properties.this.settingHttpRequestHeader(httpURLConnection);httpURLConnection.setRequestMethod("GET");// Getting or setting cookiethis.gettingOrSettingCookie(httpURLConnection, keepCookie);InputStream httpInputStream = httpURLConnection.getInputStream();BufferedReader httpBufferedReader = new BufferedReader(new InputStreamReader(httpInputStream, "GBK"));result.append(this.readBufferedContent(httpBufferedReader));// Connect to host.httpURLConnection.connect();} catch (IOException e) {e.printStackTrace();return "getHttpURLConnection failed.";}return result.toString();}public String postMethod(String url, Map parameters, boolean keepCookie) {StringBuffer httpResponse = new StringBuffer();HttpURLConnection httpURLConnection = null;OutputStream httpOutputStream = null;try {httpURLConnection = this.getHttpURLConnection(url, keepCookie);// Set request properties.this.settingHttpRequestHeader(httpURLConnection);// Set request method with 'POST'httpURLConnection.setRequestMethod("POST");// Set connection output is true.httpURLConnection.setDoOutput(true);// Getting or setting cookiethis.gettingOrSettingCookie(httpURLConnection, keepCookie);// Get Http output streamhttpOutputStream = httpURLConnection.getOutputStream();// Build post parameters stringStringBuffer postParams = new StringBuffer();int index = 0;for (Iterator<Entry> iter = parameters.entrySet().iterator(); iter.hasNext(); index++) {Entry<String, String> entry = iter.next();postParams.append(index != 0 ? "&" : "");postParams.append(entry.getKey());postParams.append("=");postParams.append(entry.getValue());}httpOutputStream.write(postParams.toString().getBytes());BufferedReader httpBufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));httpResponse.append(this.readBufferedContent(httpBufferedReader));} catch (IOException e) {e.printStackTrace();return null;} finally {try {httpOutputStream.close();} catch (IOException e) {e.printStackTrace();}}return httpResponse.toString();}/** * Setting HTTP request header properties * * @param httpURLConnection */private void settingHttpRequestHeader(HttpURLConnection httpURLConnection) {if (httpURLConnection == null)return;httpURLConnection.setRequestProperty("User-Agent", USER_AGENT_VALUE);// TODO setting some other properties here . . .}/** * Get HttpURLConnection by specified url string. * * @param url * @return * @throws IOException */private HttpURLConnection getHttpURLConnection(String url,boolean keepCookie) throws IOException {URL urlObj = new URL(url);URLConnection urlConnection = urlObj.openConnection();if (urlConnection instanceof HttpURLConnection)return (HttpURLConnection) urlConnection;throw new MalformedURLException();}/** * Read bufferedReader buffered content. * * @param bufferedReader * @return */private String readBufferedContent(BufferedReader bufferedReader) {if (bufferedReader == null)return null;StringBuffer result = new StringBuffer();String line = null;try {while ((line = bufferedReader.readLine()) != null) {result.append(line);}} catch (IOException e) {e.printStackTrace();return null;}return result.toString();}/** * Parse and create parameter map with parameter string * * @param parameterString * @return */private Map parsePostParameters(String parameterString) {if (parameterString == null || parameterString.length() == 0)return null;Map result = new HashMap<String, String>();// only one parameter key-value pairif (parameterString.indexOf(POST_PARAMETER_SPLITOR) == -1) {if (parameterString.indexOf(POST_PARAMETER_KV_SPLITOR) != -1)result.put(parameterString.split(POST_PARAMETER_KV_SPLITOR)[0],parameterString.split(POST_PARAMETER_KV_SPLITOR)[1]);} else {String[] keyValues = parameterString.split(POST_PARAMETER_SPLITOR);for (int i = 0; i < keyValues.length; i++) {String keyValue = keyValues[i];result.put(keyValue.split(POST_PARAMETER_KV_SPLITOR)[0],keyValue.split(POST_PARAMETER_KV_SPLITOR)[1]);}}return result;}/** * Get or set cookie. * * @param httpURLConnection * @param keepCookie */private void gettingOrSettingCookie(HttpURLConnection httpURLConnection,boolean keepCookie) {// Getting or setting cookie.if (cookie == null || cookie.length() == 0) {String setCookie = httpURLConnection.getHeaderField("Set-Cookie");cookie = setCookie.substring(0, setCookie.indexOf(";"));} else if (keepCookie) {httpURLConnection.setRequestProperty("Cookie", cookie);}}}
- 本人水平有限,大家如果有任何问题,欢迎和我讨论.
本人水平有限,大家如果有任何问题,欢迎和我讨论.
- 联系方式Email: <A href="mailto:tangren1206@163.com">tangren1206@163.com</A>
- QQ: 580126
- JAVA程序通过后台登陆网站,获取Session,然后再POST Http Request添加数据到数据库的实例
- 前台通过js 写个ajax请求把数据传给后台,然后后台接收到这个数据, 再保存到数据库。。
- JAVA开发中,页面post提交的数据后台通过request取出时是空的,所有参数都消失了
- thinkphp 后台获取argularjs http提交的post数据
- java通过Http get post请求url获取数据
- java后台 通过HTTP接口获取json数据
- 通过http协议获取后台数据
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- [C#.Net]利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例
- 利用HttpRequest登录到某个网站,然后获取网站信息的程序示例 [原创]
- java 读取 ajax post 到后台的Json数据
- angularJs中$http获取后台数据实例
- 我安装Solaris的全过程。
- 解析Java中抽象类和接口的区别
- IIS网站已经停止,提示服务器没有及时响应启动或控制请求!本地计算机法启动 World Wide Web Publishing 服务。提示 “错误127: 找不到指定的程序”或者“错误1721,资源不足,无法启动”
- 毕业论文的问题
- 冒泡选择插入排序算法
- JAVA程序通过后台登陆网站,获取Session,然后再POST Http Request添加数据到数据库的实例
- 我参于的
- 网页制作小技巧
- 利用ASP.NET访问共享网络资源
- XML Schema
- 通过编程管理windows 防火墙
- KTDictSeg 分词组件1.3版本 部分算法讨论 -- 分词粒度
- KTDictSeg 分词组件1.3版本 部分算法讨论 -- 中文姓名识别和未登录词识别
- 假如生活欺骗了你……