目前正在开发一个项目,其中需要在程序中使用HTTP协议访问一个服务器
用的是new URL().openConnection()的方式访问的但是出现了一个问题,因为最终系统部署采用双机方案,那么就会有一个本地IP和一个浮动IP两个IP地址
对端HTTP服务器是进行IP鉴权的,那么应该要怎么指定本地连接对端的IP地址为浮动IP我们用的肯定是sun的JDK有1.4.2也有1.5的
有没有类似System.setProperty("sun.net.client.defaultReadTimeout", "20000")的方式来指定本地连接IP地址的我已经找了很多资料,但是还没有找到类似的问题我不想用Socket,毕竟完整实现了一个HTTP协议的解析还是比较繁琐的(我们有用chucked方式传输数据的)

解决方案 »

  1.   

    IP 鉴权?
    确认来访IP的合法性?1 http协议只能拿到你在互联网的IP,也就是外网IP,不会拿到你的内网/本机IP的,所以本地IP问题不用考虑
    2 对方浮动IP? 有域名吗?没有的话,你的用户怎么访问啊?还有,双机备份的方案你看一下,其中有一项就是IP地址迁移才对。也就是备份机启动,原机器down机时,IP地址会自动转到新的机器上, 我说的IP地址也是指外网地址。如果2台机器的IP地址不同,而且即使切换时也是2个IP,各自独立,
    a) 那你得动态配置DNS了, 具体的问网管去
    b) 如果DNS只能是静态的,那就得根据域名解析到2个IP, 你尝试连接第一个,不成功则连接第二个就可以了。 象sina等,每次访问的服务器都有可能不同的,也就是DNS负载均衡。
      

  2.   

    你理解错了,和dns没有关系的
    实际上就是一个机器有两个IP,比如分别为192.168.1.1和192.168.1.2
    我现在要指定必须使用192.168.1.2这个IP去连接HTTP服务器
      

  3.   

    就像socket用bind方法指定本地IP地址那样,当然在HttpUrlConnection里面没有
    我猜sun的实现里面可能会读一个属性,就像rmi里面用
    java.rmi.server.hostname属性来指定rmi本地绑定服务的IP地址那样就是不知道HttpUrlConnection里面有没有