java後臺走接口接收返回json+獲取客戶端IP

不說廢話,代碼如下:

首先是獲取客戶端IP(通過request獲取):

/**
 * 獲取用戶IP
 * @param request
 * @return
 */
public static String getIpAddress(HttpServletRequest request) {  
    String ip = request.getHeader("x-forwarded-for");  
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
        ip = request.getHeader("Proxy-Client-IP");  
    }  
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
        ip = request.getHeader("WL-Proxy-Client-IP");  
    }  
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
        ip = request.getHeader("HTTP_CLIENT_IP");  
    }  
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");  
    }  
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
         ip = request.getRemoteAddr();  
    }  
    return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;  
}

後臺走接口取json:

/**
 * 後臺調用接口,傳入接口地址(若帶參數,將參數寫在url上) 返回 json 中的
 * 例子:http://127.0.0.1:8080/項目名/接口名?參數
 * @param pam
 * @return
 */
public static String getUrlJson(String url){ 		
		String code ="1";
        StringBuffer json = new StringBuffer();
        try {
        	//實例一個url和URLConnection
        	URL oracle = new URL(url);
        	//打開鏈接
        	URLConnection yc = oracle.openConnection();
        	//輸入流作參數傳進InputStreamReader並用BufferedReader接受
        	BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine = null;
        	while ( (inputLine = in.readLine()) != null) {
            	json.append(new String(inputLine.getBytes(),"UTF-8"));
         	}
         	//關閉連接
         	in.close();
         	JSONArray jn =  JSONArray.fromObject("["+json.toString()+"]");
            if(jn.size()>0){           
	            JSONObject jo = (JSONObject) jn.get(0);
	            code = jo.get("code").toString();
            }         	
            } catch (Exception e)  {
            	e.printStackTrace();
        	}
        	return code;
	}

上面代碼中 jn 就是取到的一組數據,jo是數據的第一條。由於我的項目請求的結果只是一條數據,且只需要code,所以,只返回了code。初始設置code爲1,code等於1則返回接受數據失敗。

上述代碼的缺點是傳參的時候只能拼進字符串,適合指定情況使用。

項目所需的jar不作敘述了,有一點值得注意的,再導入commons-lang 和 commons-collections 包是注意版本,嘗試的lang3和collections4會報找不到lang包,估計是衝突,換成lang2和collections3的就好了,點這裏查看剩餘需要的包和詳情。

點擊對應名稱下載對應jar包:

commons-lang-2.5.jar

commons-collections-3.2.2.jar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章