GVKun编程网logo

服务器端获取webservice客户端IP地址(服务器获取客户端ip和端口)

25

此处将为大家介绍关于服务器端获取webservice客户端IP地址的详细内容,并且为您解答有关服务器获取客户端ip和端口的相关问题,此外,我们还将为您介绍关于ASP.NET(.asmx)webserv

此处将为大家介绍关于服务器端获取webservice客户端IP地址的详细内容,并且为您解答有关服务器获取客户端ip和端口的相关问题,此外,我们还将为您介绍关于ASP.NET(.asmx)webservices中的客户端IP地址、axis 下的WebService 获取客户端IP代码、axis2 webservice 服务器端和客户端实现例子、CXF 部署WebService 在服务端回去客户端IP的方法的有用信息。

本文目录一览:

服务器端获取webservice客户端IP地址(服务器获取客户端ip和端口)

服务器端获取webservice客户端IP地址(服务器获取客户端ip和端口)

一、基于xfire发布的webservice获取客户端ip的方法

	public String getClientIp(){
		String ip = "";
		try {
			HttpServletRequest request = XFireServletController.getRequest();
			ip = request.getRemoteAddr();
			System.out.println("客户端ip=:"+ip);
		} catch (Exception e) {
			System.out.println("无法获取HttpServletRequest.");
			e.printstacktrace();
		}
		return ip;
	} 
二、基于axis发布的webservice获取客户端ip的方法

	public String getClientIpaxis() {
		MessageContext mc = null;
		HttpServletRequest request = null;
		try {
			mc = MessageContext.getCurrentMessageContext();
		  	if (mc == null)
		 		throw new Exception(“无法获取到MessageContext”);
		 	request = (HttpServletRequest) mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
		  	System.out.println(“remote  ip:  ” + request.getRemoteAddr());
		} catch (Exception e) {
			System.out.println(e.getMessage());
		  	e.printstacktrace();
		}
		return request.getRemoteAddr();
	}

三、基于jax-ws开发的webservice获取客户端ip的方法【在代理类XXXDelegate添加如下代码】

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
@Resource
private WebServiceContext wsContext;
private String getClientInfo(){
	MessageContext mc = wsContext.getMessageContext();
	HttpServletRequest request = (HttpServletRequest)(mc.get(MessageContext.SERVLET_REQUEST));
	String remortAddress = request.getRemoteAddr();
	return (remortAddress);
} 
import javax.servlet.http.*;
import javax.xml.rpc.server.*;
import org.apache.axis.MessageContext;
import org.apache.axis.transport.http.HTTPConstants;
public class BaseService {
	public String getClientIp(){ 
		MessageContext  mc  =  MessageContext.getCurrentContext();
		HttpServletRequest  request  =  (HttpServletRequest)  mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
		System.out.println("remote  ip:  "  +  request.getRemoteAddr());
		return request.getRemoteAddr();
	}
}

ASP.NET(.asmx)webservices中的客户端IP地址

ASP.NET(.asmx)webservices中的客户端IP地址

我在Silverlight中使用ASP.NET(.asmx)Web服务.由于无法在Silverlight中找到客户端IP地址,因此我必须在服务端登录.
这些是我尝试过的一些方法:
Request.ServerVariables("REMOTE_HOST")
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Request.UserHostAddress()
Request.UserHostName()
string strHostName = Dns.GetHostName();
string clientIPAddress = Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

以上所有方法在我的本地系统上运行正常,但是当我在生产服务器上发布我的服务时,它开始给出错误,

Error: Object reference not set to an instance of an object. StackTrace:

at System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar(Int32 index)

at System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name)

at System.Web.Hosting.ISAPIWorkerRequest.GetRemoteAddress()

at System.Web.HttpRequest.get_UserHostAddress()

解决方法

如果您在System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar代码中使用Reflector查看,那就是我们所看到的:
private string GetAdditionalServerVar(int index)
{
    if (this._additionalServerVars == null)
    {
        this.GetAdditionalServerVariables();
    }
    return this._additionalServerVars[index - 12];
}

我看到为什么会引发NullReferenceException的两个原因:

1)_additionalServerVars成员存在多线程问题.我不认为这可能发生,因为A)我不明白为什么在测试期间服务器上会有很大的负载,而且B)ISAPIWorkerRequestInProc实例可能与一个线程有关.

2)您的服务器不是最新的,生产中的代码与我在机器上看到的代码不同.

所以我要做的就是检查服务器,确保它与.NET Framework dll保持同步.

axis 下的WebService 获取客户端IP代码

axis 下的WebService 获取客户端IP代码

import javax.servlet.http.*;
import javax.xml.rpc.server.*;
import org.apache.axis.MessageContext;
import org.apache.axis.transport.http.HTTPConstants;
public class BaseService {   public String getClientIp(){     MessageContext  mc  =  MessageContext.getCurrentContext();     HttpServletRequest  request  =  (HttpServletRequest)  mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);     System.out.println("remote  ip:  "  +  request.getRemoteAddr());     return request.getRemoteAddr();   } }

axis2 webservice 服务器端和客户端实现例子

axis2 webservice 服务器端和客户端实现例子

【1.首先axis2的环境部署】

     下载两个包: axis2-1.6.1-bin.zip    axis2.war

     解压axis2-1.6.1-bin.zip 包,放到d盘。

     

     axis2.war文件放到tomcat服务器的webapps目录下。

    

  浏览器地址:点击打开链接   表明axis2服务器端部署成功。

  

   客户端可以用axis2-bin包中提供的wsdl2java.bat 工具实现。首先得配置环境。

  (1)设置环境变量: 

   

   

    找到%AXIS2_HOME%\bin目录下的wsdl2java.bat.打开修改一下。

    找到set_RUNJAVA="%JAVA_HOME%\bin\java"这一行下面加上一行

          setJAVA_OPTS="-Djava.ext.dirs=%AXIS2_HOME%\lib"

    

     eclipse下创建axis2client project

     cmd 进入axis2client 目录生成存根代码

     运行命令:

     WSDL2java –uri  http://localhost:8080/axis2/services/helloService?wsdl

     

  【客户端创建成功】


【测试】

package cn.com.webxml;

import cn.com.webxml.WeatherWebServiceStub.arrayofstring;

public class Test {
	public static void main(String[] args) throws Exception {
		
		WeatherWebServiceStub stub = new WeatherWebServiceStub();  
		
        WeatherWebServiceStub.GetWeatherbyCityName request = 
        	new WeatherWebServiceStub.GetWeatherbyCityName(); 
        
        request.setTheCityName("广州");  
        
        WeatherWebServiceStub.GetWeatherbyCityNameResponse response = 
        	stub.getWeatherbyCityName(request);  
        
        arrayofstring arrayofstring = response.getGetWeatherbyCityNameResult(); 
        //迭代出每一项
          for(int i=0;i<arrayofstring.getString().length;i++){
        	  System.out.println(arrayofstring.getString()[i]);  
          }
		
	}

}
【运行结果】

 


【出现的问题】

服务器端service 是要打包成aar的。用java cvf hello.aar .    用axis插件都可以。

发布到D:\tomcat6\webapps\axis2\WEB-INF\services  目录下。

网上有很多的例子:

【参考资料】

http://www.voidcn.com/article/p-canlunpp-ua.html

http://www.lifeba.org/arch/java_axis2_webservice.html

http://tech.ddvip.com/2009-01/1232161765106125.html

http://aihhd2008.iteye.com/blog/602828

CXF 部署WebService 在服务端回去客户端IP的方法

CXF 部署WebService 在服务端回去客户端IP的方法

最近在做 一个 WebService的服务端,遇到了问题就像把每个客户端请求的记录都给记下来,找了好久 这个可以了;小弟文字表达能力不太好,所以就只把关键代码贴上来

import javax.annotation.Resource;

import javax.xml.ws.WebServiceContext;

import org.apache.cxf.transport.http.AbstractHTTPDestination;
import javax.servlet.http.HttpServletRequest;

public class Send{

      @Resource

      private WebServiceContext context;

public String getIp() {
   MessageContext ctx = context.getMessageContext();
   HttpServletRequest request = (HttpServletRequest)
   ctx.get(AbstractHTTPDestination.HTTP_Request);
   String ip=request.getRemoteAddr();
   return ip; 

}

}

关于服务器端获取webservice客户端IP地址服务器获取客户端ip和端口的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ASP.NET(.asmx)webservices中的客户端IP地址、axis 下的WebService 获取客户端IP代码、axis2 webservice 服务器端和客户端实现例子、CXF 部署WebService 在服务端回去客户端IP的方法等相关内容,可以在本站寻找。

本文标签: