zoukankan      html  css  js  c++  java
  • 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) ....

       

  • 相关阅读:
    vue中Axios的封装和API接口的管理
    如何配置Webpack/Vue-CLI实现前端跨域(附跨域大全)
    前端面试几个重要知识点
    js常用函数
    JS中的枚举和不可枚举
    可配置性属性和不可配置性属性
    Object.create()和深拷贝
    JavaScript 中 call()、apply()、bind() 的用法
    从深入到通俗:Object.prototype.toString.call()
    js原生实现三级联动下拉菜单
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3698223.html
Copyright © 2011-2022 走看看