Rhythmk 一步一步学 JAVA (22) JAVA 网络编程

1、获取主机信息

@Test
	public void GetDomainInfo() throws UnknownHostException {
		String domain = "www.baidu.com";
		InetAddress netAddress = InetAddress.getByName(domain);
		// 获取主机名
		System.out.println(netAddress.getHostName());
		// IP地址
		System.out.println(netAddress.getCanonicalHostName());

		InetAddress ip2domain = InetAddress.getByAddress(new byte[] {
				(byte) 115, (byte) 239, (byte) 210, (byte) 26 });

		System.out.println(ip2domain.getCanonicalHostName());
		System.out.println(ip2domain.getHostName());

		/*
		 * 输出: www.baidu.com 115.239.210.26 115.239.210.26 115.239.210.26
		 */
	}

  2、URLEncode 跟 URLDecoder

// URLDecoder和URLEncoder
	@SuppressWarnings("deprecation")
	@Test
	public void URLEncode() {
		String result = URLEncoder.encode("我是Rhythmk,你呢?");
		System.out.println(result);
		// 输出:
		// %E6%88%91%E6%98%AFRhythmk%2C%E4%BD%A0%E5%91%A2%EF%BC%9F
	}

	@Test
	public void URLDecoder() {
		String result = java.net.URLDecoder
				.decode("%E6%88%91%E6%98%AFRhythmk%2C%E4%BD%A0%E5%91%A2%EF%BC%9F");
		System.out.println(result);
		/*
		 * 输出: 我是Rhythmk,你呢?
		 */

	}

  

3、POST GET 请求

	@Test
	public void Get() throws IOException {

		URLConnection urlConnect;
		URL url = new URL("http://www.baidu.com");
		urlConnect = url.openConnection();
		BufferedReader biStream = null;
		try {

			urlConnect.connect();
			Map<String, List<String>> map = urlConnect.getHeaderFields();
			for (String key : map.keySet()) {
				List<String> listKey = map.get(key);
				for (String k : listKey) {
					System.out.println("*****************" + k);
				}

			}

			biStream = new BufferedReader(new InputStreamReader(
					urlConnect.getInputStream()));
			String html = "";
			String line = null;
			while ((line = biStream.readLine()) != null) {
				html += line;
			}
			System.out
					.println("*************************  HTML 内容  ***********************");
			System.out.println(html);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (biStream != null) {
				biStream.close();
			}
		}

	}

	@Test
	public void Post() throws IOException {

		BufferedReader biStream = null;
		try {

			URL url = new URL("http://passport.rhythmk.com/signin");
	
			 
			URLConnection urlConnect = url.openConnection();
			// 设置通用的请求属性
			urlConnect.setRequestProperty("accept", "*/*");
			urlConnect.setRequestProperty("connection", "Keep-Alive");
			urlConnect.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
		
			
			// 发送POST请求必须设置如下两行  ,需要在connect  之前设定好
			urlConnect.setDoOutput(true);
			 urlConnect.setDoInput(true);
			urlConnect.connect();
	
			// 获取URLConnection对象对应的输出流
			PrintWriter out = new PrintWriter(urlConnect.getOutputStream());
			// 发送请求参数
			out.print("returnUrl=http%3A%2F%2Fwww.ciwong.com%2F&username=a&password=d");
			// flush输出流的缓冲
			out.flush();

			biStream = new BufferedReader(new InputStreamReader(
					urlConnect.getInputStream()));
			String html = "";
			String line = null;
			while ((line = biStream.readLine()) != null) {
				html += line;
			}
			System.out
					.println("************************POST*  HTML 内容  ***********************");
			System.out.println(html);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (biStream != null) {
				biStream.close();
			}
		}

	}

  注意:

如果先

urlConnect.connect();

然后如下设置

urlConnect.setDoOutput(true);
urlConnect.setDoInput(true);

导致异常:

java.lang.IllegalStateException: Already connected

at java.net.URLConnection.setDoOutput(URLConnection.java:849)
at com.rhythmk.filedemo.net_demo1.Post(net_demo1.java:126) ....

   

原文地址:https://www.cnblogs.com/rhythmK/p/3698223.html