1. 程式人生 > >cxf_webservice 獲取客戶端mac和ip

cxf_webservice 獲取客戶端mac和ip

package mac.test.server;


import javax.jws.WebService;


@WebService
public interface MacServer {
public String getMac();
public String getIp();
}

++++++++++++++++++++++++++++++++++++++++++++

package mac.test.server;



import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;


import javax.servlet.http.HttpServletRequest;


import org.apache.cxf.message.Message;
import org.apache.cxf.phase.PhaseInterceptorChain;
import org.apache.cxf.transport.http.AbstractHTTPDestination;


public class MacServerImpl implements MacServer {


@Override
public String getMac() {
String macadress = null;
try {
InetAddress ia = InetAddress.getLocalHost();
System.out.println(ia);
byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
System.out.println("mac陣列長度:"+mac.length);
StringBuffer sb = new StringBuffer("");
for(int i=0; i<mac.length; i++) {
if(i!=0) {
sb.append("-");
}
//位元組轉換為整數
int temp = mac[i]&0xff;
String str = Integer.toHexString(temp);
System.out.println("每8位:"+str);
if(str.length()==1) {
sb.append("0"+str);
}else {
sb.append(str);
}
}
System.out.println("本機MAC地址:"+sb.toString().toUpperCase());
macadress= sb.toString().toUpperCase();
} catch (Exception e) {
e.printStackTrace();
}
return macadress;
}


@Override
public String getIp() {
String ipAddress =null;
Message message = PhaseInterceptorChain.getCurrentMessage();  
    HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST); 
    ipAddress = request.getHeader("x-forwarded-for");  
    if (ipAddress == null || ipAddress.length() == 0  
           || "unknown".equalsIgnoreCase(ipAddress)) {  
       ipAddress = request.getHeader("Proxy-Client-IP");  
    }  
    if (ipAddress == null || ipAddress.length() == 0  
           || "unknown".equalsIgnoreCase(ipAddress)) {  
       ipAddress = request.getHeader("WL-Proxy-Client-IP");  
    }  
    if (ipAddress == null || ipAddress.length() == 0  
           || "unknown".equalsIgnoreCase(ipAddress)) {  
       ipAddress = request.getRemoteAddr();  
             
       //這裡主要是獲取本機的ip,可有可無  
       if (ipAddress.equals("127.0.0.1")  
               || ipAddress.endsWith("0:0:0:0:0:0:1")) {  
           // 根據網絡卡取本機配置的IP  
           InetAddress inet = null;  
           try {  
               inet = InetAddress.getLocalHost();  
           } catch (UnknownHostException e) {  
               e.printStackTrace();  
           }  
           ipAddress = inet.getHostAddress();  
       }  
     
    }  
     
    // 對於通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按照','分割  
    if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()  
                                                       // = 15  
       if (ipAddress.indexOf(",") > 0) {  
           ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));  
       }  
    }  
    //或者這樣也行,對於通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按照','分割    
    //return ipAddress!=null&&!"".equals(ipAddress)?ipAddress.split(",")[0]:null;         
    return ipAddress;  
    }  
}

相關推薦

cxf_webservice 獲取客戶macip

package mac.test.server; import javax.jws.WebService; @WebService public interface MacServer {public String getMac();public String getIp(

java web獲取客戶外網ip所在區域

@參考文章1、@參考文章2、@參考文章3、@參考文章4,@之前同事的專案  controller @Controller @RequestMapping("/home") public class HomeController { @RequestMappin

php 獲取客戶的真實IP地址 檢查客戶從什麼地方過來的請求

/* * 函式功能: 獲取客戶端的真實IP地址 * * 為什麼要用這個函式? * 因為我們線上Web伺服器絕大部分都處於Netscaler(簡稱NS)後面,客戶端訪問的地址統一由NS排程 * 由NS排程的訪問其實就是NS做了一層代理, 這期間就有一個問題, 因為真實

Java獲取客戶所在的IP地址伺服器地址

/** 2 * 獲取本地IP地址 3 * @return 4 */ public static void main(String[] args) { 2

Java獲取客戶及區域網ip埠地址

在java專案Controller層加入下面程式碼: public Map<String,Object>selectAccessory(HttpServletRequest request){ //public Map<String,Object>

獲取客戶使用的ip

blog pre 方法 class equal client pan lsi servlet 一般使用jsp的時候大多數時間都可以使用request.getRemoteAddr() 來獲取ip,但是這個前提是未經過反向代理等操作的原始地址,所以,需要在反向代理等操作之後還要

php獲取客戶mac地址

pre -a 結果 array serve str bre val log exec(‘/sbin/arp -a 2>&1‘, $array, $return_val);dump($array);$mac = ‘‘;foreach($array as $val

獲取客戶的真實IP

pan bsp 公網 @param add acea user sig n) /** * 獲取真實IP地址 * <p>使用getRealIP代替該方法</p> * @param request req * @

Java獲取客戶使用者真實IP地址

在JSP裡,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid,nginx等反向代理軟體就不能獲取到客戶端的真實IP地址了。 如果使用了反向代理軟體,將http://192.168.1.110

微信支付H5介面之獲取客戶正確的IP

微信支付H5介面,就是在移動端非微信公眾號、微信瀏覽器,移動端的其他瀏覽器喚起微信支付。 症狀:“網路環境未能通過安全驗證,請稍後再試” 商戶側統一下單傳的終端IP(spbill_create_ip)與使用者實際調起支付時微信側檢測到的終端IP不一致導致的,這個問題一般是商戶在統一下單時沒有

獲取客戶內網ip,親測有效

<html><head><meta charset="UTF-8"><script>var info = allinfo();document.write(info);var locator = new ActiveXObj

Java獲取客戶/訪問者真實IP地址的兩種方法

在JSP裡,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。在JSP裡,獲取客戶端的IP地址的方法是:request.get

java獲取客戶作業系統獲取客戶瀏覽器

UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent"

JAVA獲取客戶請求電腦IP,作業系統等等各種資訊

HttpServletRequest request = ServletActionContext.getRequest(); System.out.println("瀏覽器基本資訊:"+reque

用JavaScript獲取客戶MAC地址(轉)

<HTML><HEAD><TITLE>WMI Scripting HTML</TITLE><META http-equiv=Content-Type content=

Java 獲取客戶mac地址

package com.alpha.test; import java.io.BufferedReader; import java.io.IOException; import java.io.In

JS配合PHP獲取客戶MAC地址

<SCRIPT language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo"> document.forms[0].lbMacAddr.value=u

如何獲取客戶MAC地址(三個方法)

方法一: 呼叫Windows的DOS命令,從輸出結果中讀取MAC地址: public static String getMACAddress() { String address = "";String os = System.getProperty("os.name")

【Nginx】Nginx多級代理,獲取客戶真實請求IP以及每級代理IP

Nginx多級代理,獲取客戶端真實請求IP以及每級代理IP 如圖所示,每一級nginx裡的location配置裡需要加上對應

在容器服務中獲取客戶真實源 IP

> 適用範圍:騰訊雲容器服務(Tencent Kubernetes Engine ,TKE), 以下簡稱 TKE。 ## 為什麼需要獲取客戶端真實源 IP? 當需要能感知到服務請求來源去滿足一些業務需求時,就需要後端服務能準確獲取到請求客戶端的真實源 IP, 比如以下場景: 1. 對服務請求的來源