`

java 访问绑定ip的host url

    博客分类:
  • java
 
阅读更多

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;

import org.apache.log4j.Logger;

import com.asc.alibaba.common.util.StringUtilsExt;

public class HostUtil {
    
    private static final Logger logger = Logger.getLogger(HostUtil.class);
    
//    private static final String DEFAULT_DOMAIN = ".alibaba.com";//默认cookie的domain
    
    private static final int DEFAULT_TIMEOUT = 4000;  //默认httpclient请求的超时时间



	/**
	 * 根据绑定去查询绑定地址的url html,HttpUrlConnection调用方式
	 * 
	 * @param url
	 *            查询的url
	 * @throws IOException
	 */
	public static String getResponseText(String queryUrl) {
		return getResponseText(queryUrl, null, null);
	}
	/**
	 * 根据绑定去查询绑定地址的url html,HttpUrlConnection调用方式
	 * 
	 * @param url
	 *            查询的url
	 * @param host
	 *            需要绑定的host
	 * @param ip
	 *            对应host绑定的ip
	 * @throws IOException
	 */
	public static String getResponseText(String queryUrl,String host,String ip) {
		InputStream is = null;
		BufferedReader br = null;
		StringBuffer res = new StringBuffer();
		try {
			HttpURLConnection httpUrlConn = null;
			URL url = new URL(queryUrl);
			if(ip!=null){
			    String str[] = ip.split("\\.");
			    byte[] b =new byte[str.length];
			    for(int i=0,len=str.length;i<len;i++){
			        b[i] = (byte)(Integer.parseInt(str[i],10));
			    }
	            Proxy proxy = new Proxy(Proxy.Type.HTTP,
	            new InetSocketAddress(InetAddress.getByAddress(b), 80));
	            httpUrlConn = (HttpURLConnection) url
                .openConnection(proxy);
			}else{
	            httpUrlConn = (HttpURLConnection) url
	                    .openConnection();
			}
			httpUrlConn.setRequestMethod("GET");
			httpUrlConn.setDoOutput(true);
			httpUrlConn.setConnectTimeout(DEFAULT_TIMEOUT);
			httpUrlConn.setReadTimeout(DEFAULT_TIMEOUT);
			httpUrlConn.setDefaultUseCaches(false);
			httpUrlConn.setUseCaches(false);

			is = httpUrlConn.getInputStream();

			int responseCode = httpUrlConn.getResponseCode();
			// 如果返回的结果是400以上,那么就说明出问题了
			if (responseCode > 400) {
				logger.error("getResponseText for queryurl:" + queryUrl + " got responseCode :" + responseCode);
				return "getResponseText for queryurl:" + queryUrl + " got responseCode :" + responseCode;
			}
			// 需要自动识别页面的编码,通过从context-type中解析得到,默认为UTF-8
			String encoding = "UTF-8";
			String contextType = httpUrlConn.getContentType();
			if (StringUtilsExt.isNotBlank(contextType)) {
				int pos = contextType.lastIndexOf("=");
				if (pos > -1) {
					encoding = contextType.substring(pos + 1);
				}
			}
			// System.out.println(encoding);

			br = new BufferedReader(new InputStreamReader(is, encoding));

			String data = null;
			while ((data = br.readLine()) != null) {
				res.append(data + "\n");
			}
			return res.toString();

		} catch (IOException e) {
            logger.error(e.getMessage(), e);
            return "failed: " + e.getMessage();
		} catch (Exception e) {
		    logger.error(e.getMessage(), e);
		    return "failed: " + e.getMessage();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
		            logger.error(e.getMessage(), e);
		            res.append(e.getMessage());
				}
			}
		}
	}


	public static void main(String[] args){
	    String ct = HostUtil.getResponseText("http://top.china.alibaba.com", "top.china.alibaba.com", "10.20.150.207");
	    System.out.println(ct);
	}
}
 
分享到:
评论

相关推荐

    TOMCAT多域名绑定

    Tomcat,作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)的标准实现,广泛用于搭建Java Web应用程序。 在Tomcat中实现多域名绑定,主要涉及以下知识点: 1. **虚拟主机(Virtual ...

    多域名绑定问题资料集合

    首先,多域名绑定是指在一个服务器上同时配置多个不同的域名,使得用户可以通过不同的URL访问到同一台服务器上的不同资源。这在拥有多个网站或者需要为不同业务分配独立域名的企业环境中非常常见。实现多域名绑定的...

    java 查找主机的资源

    这个包包含了用于网络编程的基本类,如Socket、ServerSocket、URL和InetAddress等,它们提供了对TCP/IP协议栈的访问。 1. **InetAddress类**:这是Java中用于表示互联网协议地址(IP地址)的主要类。你可以通过`...

    TCPIP编程+实验一 URL基础编程 doc

    在Java中,进行TCP/IP编程时,经常会用到Socket通信基础,这包括理解并使用如InetAddress这样的类来处理网络寻址和连接。 InetAddress类是Java中处理IP地址的核心类,它在TCP/IP编程中扮演着关键角色。InetAddress...

    Java 网络编程教程含代码

    - `bind(SocketAddress host, int backlog)`:将服务器套接字绑定到特定的IP地址和端口,并指定最大连接队列长度。 通过理解和熟练运用这些概念和API,开发者可以在Java中构建高效、可靠的网络应用程序,实现数据的...

    java网络编程使用的简单例子

    首先,客户端需要知道服务器的IP地址和端口号,然后通过`Socket(String host, int port)`构造函数发起连接。连接建立后,客户端和服务器可以通过`Socket`对象的`getInputStream()`和`getOutputStream()`获取输入/...

    Java之网络编程篇

    3. **getAllByName(String host)**:当一台主机可以通过多个IP地址访问时,可以使用此方法获取所有匹配的`InetAddress`对象数组。如果找不到主机,同样会抛出`UnknownHostException`异常。 ```java try { ...

    JAVA网络编程常见问题与答案

    本文将详细讲解 JAVA 网络编程中常见问题与答案,涵盖 TCP 连接和断开、SOCKET 语句、端口扫描、互联网上两台计算机的通信方式、TCP/IP 网络分层模型、多线程程序设计对计算机性能的影响、非阻塞程序设计要点等方面...

    Nginx反向代理不能访问项目的解决办法

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } ``` - **...

    Java网络编程

    在Java中,`java.net.InetAddress`类用于表示IP地址。可以通过以下四种静态方法创建`InetAddress`对象: 1. `getByName(String host)`:通过主机名或IP地址字符串创建`InetAddress`对象。 2. `getLocalHost()`:...

    详解Tomcat多域名配置(多个项目共用80端口)

    在当前的互联网环境下,Tomcat服务器作为一款应用广泛的开源Java Web服务器,是企业部署Java应用的主要选择之一。为了实现项目的高效部署和资源的最大化利用,有时需要在单个服务器上配置多个域名来对应不同的项目。...

    ElasticSearch部署操作说明

    本机IPdiscovery.zen.ping.unicast.hosts:[“本机IP”,“IP2”,“ip3”] //集群地址http.host: 本机IPhttp.cors.enabled: truehttp.cors.allow-origin: "*"network.publish_host: 绑定的外网IP(如果本机IP可以与...

    学习笔记1

    c) 配置域名,绑定到服务器IP和端口,通常需要端口80,如果已被占用,需关闭占用进程或更换端口。 6. **域名绑定与DNS** 域名绑定涉及到DNS(Domain Name System)设置,通过DNS解析,将域名映射到服务器的IP地址...

    详解Tomcat服务器绑定多域名和虚拟目录的方法

    1. Engine的defaultHost属性不能设置为localhost,否则通过IP访问服务器时,Tomcat会默认指向其管理界面。一般情况下,我们将其设置为一个实际使用的域名。 2. Host的name属性需要设置为你希望绑定的域名,而appBase...

    socket 学习笔记

    - `InetAddress.getByName(String url)`:通过URL获取其对应的IP地址。 4. **设置客户端信息**: - 当创建Socket时,可以使用带有四个参数的构造函数来指定本地和远程的IP地址及端口,以便于自定义客户端的身份。...

    Socket通信样例代码

    在Java中,我们可以使用`InetAddress`类的静态方法`getByName(String host)`来根据主机名获取IP地址,或者用`getHostAddress()`方法从IP地址对象中获取IP字符串形式。例如,`InetAddress.getByName("example.com")`...

    Java 网络编程socket编程等详解

    此外,Java还提供了`URL`处理的相关功能,允许程序访问和解析统一资源定位符。`URL`类可以帮助打开到资源的连接,读取或写入数据。 总的来说,Java网络编程的核心在于理解如何使用`Socket`和`ServerSocket`类进行...

    dhcp-c3p0-jar包.7z

    DHCP (Dynamic Host Configuration Protocol) 是一种网络协议,主要用于自动分配、管理IP地址和其他网络配置信息,使得网络设备(如计算机、路由器等)能够迅速接入网络。然而,标题中的"dhcp-c3p0-jar包.7z"实际上...

    RMI获取远程资源信息

    - 使用` LocateRegistry.getRegistry(host, port)`获取RMI Registry的引用,其中`host`是服务端的IP地址,`port`通常是默认的Registry端口1099。 - 通过`Registry.lookup(name)`查找并获取远程接口的引用,`name`...

    oracle11g对应的ojdbc6.jar

    jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=数据库服务器IP)(PORT=数据库端口))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=服务名))) ``` 5. **SQL映射**: MyBatis允许开发者在XML映射...

Global site tag (gtag.js) - Google Analytics