文档章节

http请求封装

千元机爱好者
 千元机爱好者
发布于 2016/10/08 15:13
字数 303
阅读 21
收藏 1
package an.you.common.http;

import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
/**
 * http请求工具类
 * @author anyou
 *
 */
public class BaseUrlUtil {
	/**
	 * 封装请求地址的前部分
	 * @param request
	 * @return
	 */
	public static String getBaseUrl(HttpServletRequest request){
		String path = request.getContextPath();
		int port = request.getServerPort();
		String _port = ":"+port;
		if(port == 80 || port == 443)_port = "";
		String basePath = request.getScheme()+"://"+request.getServerName()+_port+path+"/";
		return basePath;
	}
	/**
	 * 获取请求地址的参数,多个参数以,分割
	 * @param request
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static String getPaream(HttpServletRequest request){
		Map map = request.getParameterMap();
		String returnStr = "";
		Iterator entries = map.entrySet().iterator(); 
		Map.Entry entry;
		while (entries.hasNext()) {
			entry = (Map.Entry) entries.next(); 
			String name = (String) entry.getKey(); 
			Object valueObj = entry.getValue();
			String value = "";
			if(valueObj instanceof String[]){ 
				String[] values = (String[])valueObj;
				for(int i=0;i<values.length;i++){ 
					 value = values[i] + ",";
				}
				value = value.substring(0, value.length()-1); 
			}else{
				value = valueObj.toString(); 
			}
			
			returnStr += name + "=" + value +"&";
		}
		if(returnStr.length()>0){
			returnStr = returnStr.substring(0, returnStr.length()-1);
		}
		return returnStr;
	}
	/**
	 * 获取客户端请求的IP地址
	 * @param request
	 * @return
	 */
	public static String getRequestIP(HttpServletRequest request){
		String spBillCreateIP = "";
		if (request.getHeader("x-forwarded-for") == null) {
			spBillCreateIP = request.getRemoteAddr();
		} else {
			String _ip = request.getHeader("x-forwarded-for");
			String[] str = _ip.replace(" ", "").split(",");
			if (str.length > 0) {
				spBillCreateIP = str[0];
			} else {
				spBillCreateIP = request.getHeader("x-forwarded-for");
			}

		}
		return spBillCreateIP;
	}
	/**
	 * 获取访问的浏览器和操作系统
	 * @param request
	 * @return
	 */
	public static String[] getRequestUseragent(HttpServletRequest request){
		String[] strs = new String[2];
		String brower = null;
		String userOs = null;
		String agent = request.getHeader("user-agent");
		agent = agent.substring(agent.indexOf("(")+1, agent.indexOf(")"));
		String[] _agents = agent.split(";");
		if(agent.contains("iPhone")){
			brower = "Safari";
			userOs = "iPhone";
		}else if(agent.contains("MSIE")){
			brower = _agents[1];
			userOs = _agents[2];
		}else if(agent.contains("Linux")){
			if(_agents[1].contains("Android"))userOs = _agents[1];
			else userOs = _agents[2];
			brower = _agents[_agents.length-1];
		}else{
			brower = _agents[0];
			userOs = _agents[0];
		}
		strs[0] = brower;
		strs[1] = userOs;
		return strs;
	}
}

 

© 著作权归作者所有

共有 人打赏支持
千元机爱好者
粉丝 10
博文 35
码字总数 35649
作品 0
焦作
后端工程师
私信 提问
加载中

评论(1)

千元机爱好者
千元机爱好者
自顶一个

暂无文章

solr使用规范

0. 目的 规范solr设计、用法,避免bug,提高性能 1. 设计规范 solr的用途是查询,不是存储,建议查询结果尽量都为id主键,而后再拿该id主键到缓存或者db中再查询相关信息,例如:请勿将经销商...

andersChow
31分钟前
1
0
11-《深度拆解JVM》之Java对象的内存布局

一、问题引入 在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对...

飞鱼说编程
35分钟前
1
0
Windows Install Docker

win7、win8 win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker toolbox...

linuxprobe16
40分钟前
1
0
混合云环境中扩展Kubernetes的挑战及方案

流量突增时,我们需要扩展应用程序以满足用户需求。本文分享了扩展Kubernetes以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成Kubernetes扩展。 引 言 假设您的业务是在线的:您...

RancherLabs
48分钟前
1
0
Java集合小抄

Java集合小抄 1. List 1.1 ArrayList 以数组实现。节约空间,但是数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组。因此最好能给出数组大小的预估值。默认第一...

傅小水water
55分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部