博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
远程访问(HttpClient和HttpResponse的使用) 原型模式
阅读量:7029 次
发布时间:2019-06-28

本文共 4641 字,大约阅读时间需要 15 分钟。

1 package com.webserver.webservice;  2   3 import java.io.ByteArrayInputStream;  4 import java.io.FileOutputStream;  5 import java.io.IOException;  6 import java.net.SocketTimeoutException;  7 import java.text.SimpleDateFormat;  8 import java.util.Date;  9 import java.util.Iterator; 10 import java.util.Map; 11 import java.util.Set; 12 import java.util.concurrent.ConcurrentHashMap; 13  14 import javax.servlet.ServletException; 15 import javax.servlet.annotation.WebServlet; 16 import javax.servlet.http.HttpServlet; 17 import javax.servlet.http.HttpServletRequest; 18 import javax.servlet.http.HttpServletResponse; 19  20 import org.apache.http.Header; 21 import org.apache.http.HttpResponse; 22 import org.apache.http.client.ClientProtocolException; 23 import org.apache.http.client.HttpClient; 24 import org.apache.http.client.methods.HttpPost; 25 import org.apache.http.entity.BasicHttpEntity; 26 import org.apache.http.impl.client.DefaultHttpClient; 27 import org.apache.http.params.CoreConnectionPNames; 28 import org.apache.http.util.EntityUtils; 29  30 /** 31  * Servlet implementation class Prompt 32  */ 33 @WebServlet("/Prompt") 34 public class Prompt extends HttpServlet { 35     private static final long serialVersionUID = 1L; 36     private static Map
cookieMap = new ConcurrentHashMap
(); 37 public static String yuyinServer = "http://10.3.172.205:8080/RecognizePY/directRecognize"; 38 /** 39 * @see HttpServlet#HttpServlet() 40 */ 41 public Prompt() { 42 super(); 43 // TODO Auto-generated constructor stub 44 } 45 46 /** 47 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 48 */ 49 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 50 // TODO Auto-generated method stub 51 this.doPost(request, response); 52 } 53 54 /** 55 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 56 */ 57 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 58 String session = request.getParameter("session").trim(); 59 //String token = request.getParameter("token").trim(); 60 response.setCharacterEncoding("UTF-8"); 61 response.setContentType("text/json;charset=utf-8"); 62 String firstCookie = ""; 63 //从原型管理器中获取原型对象 64 CookieData cookie = cookieMap.get(session); 65 //原型管理器包含该对象 66 if(cookie!=null){ 67 firstCookie = cookie.getCookie(); 68 cookie.setAccessDate(System.currentTimeMillis()); 69 } else { 70 //不包含就创建一个对象 并存到原型管理器中 71 CookieData tmpCookie = new CookieData(); 72 firstCookie = getCookie(); 73 tmpCookie.setCookie(firstCookie); 74 tmpCookie.setAccessDate(System.currentTimeMillis()); 75 cookieMap.put(session, tmpCookie); 76 //根据具体情况 原型对象在原型管理器中存放时间超过规定时间移除改原型对象 77 cleanCookieMap(); 78 } 79 //TODO 80 //.... 81 82 } 83 84 85 /** 86 * 客户端要记住返回的cookie 87 * @return 88 * @throws ClientProtocolException 89 * @throws IOException 90 */ 91 public String getCookie() throws ClientProtocolException, IOException{ 92 String firstCookie = ""; 93 try{ 94 HttpClient client = new DefaultHttpClient(); 95 HttpPost post = new HttpPost(yuyinServer); 96 //设置连接超时时间 97 client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000); 98 //设置数据传输超时时间 99 client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 6000);100 HttpResponse response = null;101 response = client.execute(post);102 if(response.getStatusLine().getStatusCode()==200){103 //如果状态码为200,就是正常返回 104 Header[] cookies = response.getHeaders("Set-Cookie");105 for( int i=0;i
keySet = cookieMap.keySet();211 Iterator
it = keySet.iterator();212 while(it.hasNext()){213 String key = it.next();214 CookieData cookie = cookieMap.get(key);215 //如果cookie保存时间超过一小时 则移除216 if(currTime - cookie.getAccessDate()> 3600000 ){217 cookieMap.remove(key);218 }219 }220 }221 }

 

转载于:https://www.cnblogs.com/Wen-yu-jing/p/3861159.html

你可能感兴趣的文章
将python3.6软件的py文件打包成exe程序
查看>>
DataTable 排序
查看>>
大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)
查看>>
嵌入式系统在工业控制中的应用
查看>>
docker for caffe
查看>>
使用httpclient异步调用WebAPI接口
查看>>
c++ 类的对象与指针
查看>>
SSTI(模板注入)
查看>>
rbac models
查看>>
[2615]传纸条 sdutOJ
查看>>
类图标注的使用范例
查看>>
NumberFormat注解 DateTimeFormat
查看>>
[转载]PV操作简单理解
查看>>
Acm Dima and Lisa的题解
查看>>
2017 ZSTU寒假排位赛 #7
查看>>
MSSQL_打开xp_cmdshell
查看>>
(转)win7英文目录和中文目录,文件夹的别名
查看>>
MySQL进阶
查看>>
mybatis分页 -----PageHelper插件
查看>>
从移动硬盘启动电脑与重装注意事项
查看>>