文档章节

http请求封装

千元机爱好者
 千元机爱好者
发布于 2016/10/08 15:13
字数 303
阅读 22
收藏 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)

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

暂无文章

Spring Cloud Feign 异常处理

问题 最近在项目开发中,使用 Feign 调用服务,当触发熔断机制时,遇到了以下问题: 异常信息形如:TestService#addRecord(ParamVO) failed and no fallback available.; 获取不到服务提供方...

xiaomin0322
16分钟前
1
0
解决OSX使用oh-my-zsh后.bash_profile自定义失效

场景描述 为了使OSX自带的终端在使用上更加顺手,便安装了oh-my-zsh插件, 但发现之前在.bash_profile自定义的一些内容都失效了。 问题分析 oh-my-zsh有自己的配置文件,覆盖了.bash_profile...

SuShine
19分钟前
0
0
java中线程读取配置文件properties

配置文件在很多方面可以用到,比如数据库连接,数据库工厂方法的调用,只要在配置文件中修改即可,不用修改程序,使用起来还是很方便的。 现在演示一下通过线程读取配置文件进行反射的一种方...

寒风中的独狼
21分钟前
2
0
面向接口编程详解-Java篇

  相信看到这篇文字的人已经不需要了解什么是接口了,我就不再过多的做介绍了,直接步入正题,接口测试如何编写。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印...

浮躁的码农
22分钟前
2
0
NPM install -save 和 -save-dev 傻傻分不清

本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顾 npm install 命令 最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用...

翔飘飘
23分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部