不說廢話,代碼如下:
首先是獲取客戶端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包: