在WebService中处理IP地址

//在webService中写到:

import javax.annotation.Resource;
import
javax.servlet.http.HttpServletRequest;
import
javax.xml.ws.WebServiceContext;
import
javax.xml.ws.handler.MessageContext;

import org.apache.cxf.transport.http.AbstractHTTPDestination;
import
org.springframework.beans.factory.annotation.Autowired;

@Resource
 private WebServiceContext context;

容器自动把WebSericeContext 注入到该属性中.

public void  getIpAddress(){

  MessageContext ctx = context.getMessageContext();

HttpServletRequest request =
(HttpServletRequest) ctx.get(AbstractHTTPDestination.HTTP_REQUEST);

String
ip=request.getRemoteAddr(); //获得地址

}

附:通过IP获得详细的市和县:

  //先写这个类,这是通过网上的一个接口进行IP查询所在地

import java.io.BufferedReader;
import
java.io.DataOutputStream;
import java.io.IOException;
import
java.io.InputStreamReader;
import java.net.HttpURLConnection;
import
java.net.URL;

/**
 * @author 丁宗彪
 * @version 创建时间: 2014-5-8
下午04:18:45
 */
public class AddressByIpUtil {

public static String getIpAddr(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.getRemoteAddr();

}

return ip;

}

/**
  *
  * @param content
 
*            请求的参数
格式为:name=xxx&pwd=xxx
  * @param encoding
 
*           
服务器端请求编码。如GBK,UTF-8等
  * @return
  */
 public static
String getAddresses(String content, String encodingString)
{
  content="ip="+content;
  //
这里调用pconline的接口
  String urlStr = "http://whois.pconline.com.cn/ipJson.jsp";
  //
http://whois.pconline.com.cn取得IP所在的省市区信息
  String
returnStr = AddressByIpUtil.getResult(urlStr, content,
encodingString);
  if (returnStr != null) {
   //
处理返回的省市区信息
   int startIndex =
returnStr.indexOf("\"pro");
   int endIndex =
returnStr.indexOf(",\"addr");
   if (startIndex > 0
&& endIndex > 0 && endIndex > startIndex)
{
    returnStr = returnStr.substring(startIndex,
endIndex);
    returnStr = returnStr.replaceAll("\"",
"").replace("pro:", "")
      .replace("city:",
"").replace("region:",
"");
   }
  }
  return
returnStr.substring(0,returnStr.length()-1);
 }

/**
  * @param urlStr
 
*           
请求的地址
  * @param content
 
*            请求的参数
格式为:name=xxx&pwd=xxx
  * @param encoding
 
*           
服务器端请求编码。如GBK,UTF-8等
  * @return
  */
 private static
String getResult(String urlStr, String content, String encoding)
{
  URL url = null;
  HttpURLConnection connection =
null;
  try {
   url = new
URL(urlStr);
   connection = (HttpURLConnection)
url.openConnection();//
新建连接实例
   connection.setConnectTimeout(2000);//
设置连接超时时间,单位毫秒
   connection.setReadTimeout(2000);//
设置读取数据超时时间,单位毫秒

connection.setDoOutput(true);// 是否打开输出流
true|false
   connection.setDoInput(true);//
是否打开输入流true|false
   connection.setRequestMethod("POST");//
提交方法POST|GET
   connection.setUseCaches(false);//
是否缓存true|false
   connection.connect();// 打开连接端口

DataOutputStream out = new
DataOutputStream(connection
     .getOutputStream());//
打开输出流往对端服务器写数据
   out.writeBytes(content);// 写数据,也就是提交你的表单
name=xxx&pwd=xxx
   out.flush();//
刷新
   out.close();// 关闭输出流
   BufferedReader
reader = new BufferedReader(new
InputStreamReader(
     connection.getInputStream(),
encoding));// 往对端写完数据对端服务器返回数据
   //
,以BufferedReader流来读取
   StringBuffer buffer = new
StringBuffer();
   String line =
"";
   while ((line = reader.readLine()) != null)
{
    buffer.append(line);
   }
   reader.close();
   return
buffer.toString();
  } catch (IOException e)
{
   e.printStackTrace();
  } finally
{
   if (connection != null)
{
    connection.disconnect();//
关闭连接
   }
  }
  return
null;
 }

}

//这是测试类

public static void main(String[] args) throws Exception
{
  AddressByIpUtil addressUtils = new
AddressByIpUtil();
  // 测试ip
  String ip =
"111.204.22.226";
  String address = addressUtils.getAddresses(ip,
"GBK");
  System.out.println(address);

}

在WebService中处理IP地址

时间: 2024-10-13 18:09:17

在WebService中处理IP地址的相关文章

Android中由IP地址查询经纬度坐标的实例

大家都知道,根据IP地址就可以知道它所在的具体位置,在Android中同样可以由IP地址得到它的位置,即具体的地理经纬度坐标. 本文就直接以代码的方式演示如何根据IP地址查询地理经纬度坐标位置,下面的例子中演示的就是由58.192.32.1这个IP地址查询到其所在的经纬度坐标为(118.777802,32.061699). Java代码 package eoe.demo; import com.mapdigit.gis.DigitalMap; import com.mapdigit.gis.Ma

性能优化之——.NET(C#)调用webService获取客户端IP地址所属区域(异步回调)(二)

朋友们这次分享的是异步回调不是异步调用哦! 请注意喽! 功能描述,接口地址,方法名称以及参数说明,同上篇:.NET(C#)调用webService获取客户端IP地址所属区域(非异步)(一)(LZ比较懒,不想写太多哦!(⊙0⊙)) 实现代码如下: 1 namespace main 2 { 3 class Program 4 { 5 public static string Result = string.Empty; 6 7 static void Main(string[] args) 8 {

在cmd中获取ip地址和主机名

将下面的文件放到一个bat文件当中,以管理员身份运行. @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ echo "please wait" for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b echo %fsip% s

awk , 统计secure.log中 每个破解你密码的ip的出现次数|access.log 中 每个ip地址出现的次数

统计secure.log中 每个破解你密码的ip的出现次数 [[email protected] files]# awk '/Failed password/{h[$(NF-3)]++}END{for(pol in h) print pol,h[pol]}' secure-20161219 |sort -rnk2|head 统计access.log 中 每个ip地址出现的次数 [[email protected] files]# awk '{h[$1]++}END{for(pol in h) p

02收银中遇到IP地址冲突的处理方法

收银中遇到IP地址冲突的处理方法 下面带有感叹号,表示IP地址冲突不能上网那么,如何解决呢?打开"网络和共享中心"的方法1 打开"网络和共享中心"的方法2 然后点击"本地连接" 修改IP地址获取方式点击"iPv4",然后点击"属性" 把IP地址改为自动获取,DNS改为自动获取后,一定要记得点击"保存"!!!为了使收银机快速获取到地址,先禁用"本地连接",然后再启用&q

ubuntu中配置ip地址和上网配置

ubuntu中的ip地址配置: 基于NAT模式: 如果能正常连接ip,但不能ping动www.baidu.com的话,我们需要在配置文件中配置主机上网的DNS地址,如下: 1)sudo gedit /etc/resolv.conf 2)上网查了本地的DNS服务器地址,并加入其中   nameserver 202.*.*.*   然后保存,立即生效了.   验证以下:   ping www.baidu.com  通啦- 遇到的问题: 机器重启之后/etc/resolv.conf自动清空,要重新配置

.NET(C#)调用webService获取客户端IP地址所属区域(非异步)

功能描述: 此接口用于获取客户端访问的IP的地址所属的区域(国家,城市等).通过输入IP地址查询国家.城市.所有者等信息.没有注明国家的为中国输入参数:IP地址(自动替换 " ." 为 "."),返回数据: 一个一维字符串数组String(1),String(0) = IP地址:String(1) = 国家.城市.所有者等 1.1.1. 接口地址 Webservice方式: 例:http://webservice.webxml.com.cn/WebServices/

php中获取ip地址

function GetIP(){ if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){   $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } elseif(!empty($_SERVER["HTTP_CLIENT_IP"])){  $cip = $_SERVER["HTTP_CLIENT_IP"]; } elseif(!empty($_SERVER[&

logresolve - 解析Apache日志中的IP地址为主机名

logresolve是一个解析Apache访问日志中IP地址的后处理程序. 为了使对名称服务器的影响降到最低,logresolve拥有极为自主的内部散列表缓存, 使每个IP值仅仅在第一次从日志文件中读出时才被解析一次. 此程序从标准输入设备上获得需要解析的Apache日志文件, 其中,IP地址必须在每行的开始处,行中其余信息必须以空格分隔. 概要 logresolve [ -s filename ] [ -c ] < access_log > access_log.new 选项 -s file