使用HttpURLConnection类(利用sessionId保持会话)

TestServlet.java

  1. package nj.servlet;
  2. import javax.servlet.http.HttpServlet;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import javax.servlet.http.HttpSession;
  6. public class TestServlet extends HttpServlet {
  7.     public void doPost(HttpServletRequest request,HttpServletResponse response){
  8.         HttpSession session=request.getSession();
  9.         String str=(String)session.getAttribute("name");
  10.         System.out.println("name:"+str);
  11.         session.setAttribute("name""nj");
  12.         /*String ss=request.getHeader("Cookie");
  13.         System.out.println("session id:"+ss);*/
  14.     }
  15.     public void doGet(HttpServletRequest request,HttpServletResponse response){
  16.         this.doPost(request, response);
  17.     }
  18. }

 

TestServlet.java

  1. package nj.ws.test;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.Set;
  10. public class TestConnection {
  11.     
  12.     public static void main(String[] args){
  13.         //第一次连接,返回session id
  14.         String sessionId=testUrlConnection();
  15.         //第二次使用session id连接
  16.         connectionBySession(sessionId);
  17.     }
  18.     
  19.     public static String testUrlConnection(){
  20.         String urlStr="Http://localhost:8080/WebServiceProject/testServlet";
  21.         OutputStream out=null;
  22.         InputStream in=null;
  23.         try {
  24.             URL url=new URL(urlStr);
  25.             HttpURLConnection con=(HttpURLConnection)url.openConnection();
  26.             con.setRequestMethod("POST");
  27.             
  28.             //打印请求头信息
  29.             Map hfs=con.getHeaderFields();
  30.             Set<String> keys=hfs.keySet();
  31.             for(String str:keys){
  32.                 List<String> vs=(List)hfs.get(str);
  33.                 System.out.print(str+":");
  34.                 for(String v:vs){
  35.                     System.out.print(v+"/t");
  36.                 }
  37.                 System.out.println();
  38.             }
  39.             System.out.println("-----------------------");
  40.             String cookieValue=con.getHeaderField("Set-Cookie");
  41.             System.out.println("cookie value:"+cookieValue);
  42.             String sessionId=cookieValue.substring(0, cookieValue.indexOf(";"));
  43.             return sessionId;
  44.         } catch (Exception e) {
  45.             e.printStackTrace();
  46.             return null;
  47.         }finally{
  48.             try {
  49.                 if(in!=null)
  50.                     in.close();
  51.                 if(out!=null)
  52.                     out.close();
  53.             } catch (IOException e) {
  54.                 e.printStackTrace();
  55.             }
  56.         }
  57.     }
  58.     
  59.     public static void connectionBySession(String sessionId){
  60.         InputStream in=null;
  61.         try{
  62.             String url="Http://localhost:8080/WebServiceProject/testServlet";
  63.             URL u=new URL(url);
  64.             HttpURLConnection con=(HttpURLConnection)u.openConnection();
  65.             con.setRequestMethod("POST");
  66.             con.setRequestProperty("Cookie", sessionId);
  67.             in=con.getInputStream();
  68.         }catch(Exception e){
  69.             e.printStackTrace();
  70.         }finally{
  71.             try {
  72.                 if(in!=null)
  73.                     in.close();
  74.             } catch (IOException e) {
  75.                 e.printStackTrace();
  76.             }
  77.         }
  78.     }
  79. }

运行后打印结果:

Web服务端:

name:null
name:nj

 

测试类打印:

null:HTTP/1.1 200 OK 
Content-Length:0 
Set-Cookie:JSESSIONID=7827696933343BC5005E5244369CB2A8; Path=/WebServiceProject 
Date:Mon, 01 Dec 2008 03:16:30 GMT 
Server:Apache-Coyote/1.1 
-----------------------
cookie value:JSESSIONID=7827696933343BC5005E5244369CB2A8; Path=/WebServiceProject

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package test; 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.util.List; import java.util.Map; public class HttpTest { private HttpURLConnection hc = null; private static final String oneUrlString = "http://xxx.jsp"; private static final String twoUrlString = "http://xxx.action"; public String getSessionId() { String sessionId = ""; try { URL url = new URL(oneUrlString); hc = (HttpURLConnection) url.openConnection();//默认的用GET提交 hc.setDoOutput(true); hc.connect(); Map map = hc.getHeaderFields(); //得到Cookie的所有内容,包括SESSIONID,在进行下次提交的时候 直接把这个Cookie的值设到头里头就行了 //淡然只得到SESSIONID也很简单的 ,但是有时候Set-Cookie的值有几个的 List list = (List) map.get("Set-Cookie"); if(list.size() == 0||list == null) { return null; } StringBuilder builder = new StringBuilder(); for(String str : list) { sessionId = builder.append(str).toString(); } hc.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sessionId; } public String getResponseContext(String parameters) { String responseContext = ""; try { URL url = new URL(twoUrlString); hc = (HttpURLConnection) url.openConnection();//使用POST提交 hc.addRequestProperty("Cookie", getSessionId()); hc.setDoOutput(true); hc.connect(); OutputStream out = hc.getOutputStream(); //参数是a=""&b=""这样拼接的一个串 out.flush(); out.close(); out.write(parameters.getBytes(),0,parameters.getBytes().length); InputStream in = hc.getInputStream(); InputStreamReader reader = new InputStreamReader(in,"gb2312"); BufferedReader read = new BufferedReader(reader); StringBuilder builder = new StringBuilder(); String str = ""; while((str = read.readLine()) != null) { builder = builder.append(str); } read.close(); reader.close(); in.close(); hc.disconnect(); responseContext = builder.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return responseContext; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值