1、Java为网络支持提供了java.net包,该包下的URL和URLConnection等类提供了 以编程方式访问WEB服务 的功能;
2、URLDecoder、URLEncoder提供了 普通字符串 和 application/x-www-form-urlencoded MIME字符串 相互转换的静态方法;
3、【InetAddress】
1.1 Java使用InetAddress代表IP地址,InetAddress有2个子类:Inet4Address、Inet6Address
1.2 InetAddress没有提供构造器, 获取实例 使用2个静态方法:
InetAddress getByName(String host); 根据主机获取对应的InetAddress对象;
InetAddress getByAddresss(byte[] address); 根据原始IP地址获取对应的InetAddress对象;
InetAddress getLocalHost(); 获取本机IP地址对应的InetAddress实例;
1.3 方法:
String getCanonicalHostName(); 获取此IP地址的全限定域名;
String getHostAddress(); 返回此InetAddress对象的IP地址字符串;
String getHostName(); 获取此IP地址的主机名;
boolean isReachable(int time); 测试是否可到达该地址;
4、【使用URLDecoder、URLEncoder】
1.1 URLDecoder、URLEncoder用于将 普通字符串 和 application/x-www-form-urlencoded MIME字符串 相互转换;
1.2 application/x-www-form-urlencoded MIME字符串:
在搜索引擎搜索包含中文的关键字时,访问的URL后面中文会变成类似乱码的东西,这就是application/x-www-form-urlencoded MIME字符串;
1.3 【URLEncoder】
方法:
String encode(String s,String env); 将中文转换为application/x-www-form-urlencoded MIME字符串(s代表要转换的中文,env代表使用的编码格式);
【URLDecoder】
方法:
String decode(String s,String env); 将application/x-www-form-urlencoded MIME字符串转换为中文(s代表要转换的字符串,env代表使用的编码格式);
package com.an.net; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; import java.net.URLEncoder; public class URLTest { public static void main(String[] args)throws Exception{ String encodeString=URLEncoder.encode("你好","UTF-8"); //encodeString=%E4%BD%A0%E5%A5%BD System.out.println(encodeString); String decode=URLDecoder.decode(encodeString,"UTF-8"); //decode=你好 System.out.println(decode); URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin"); String file=url.getFile(); //file=/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin System.out.println(file); String host=url.getHost(); //host=baike.baidu.com System.out.println(host); String path=url.getPath(); //path=/item/%E4%BD%A0%E5%A5%BD/32416 System.out.println(path); int port=url.getPort(); System.out.println(port); String protocol=url.getProtocol(); //protocol=https System.out.println(protocol); String query=url.getQuery(); //query=fr=aladdin System.out.println(query); URLConnection urlConnection =url.openConnection(); urlConnection.getOutputStream(); } }
5、【使用URL、URLConnection】
1.1 【URL】
URL对象 代表统一资源定位器,是指向互联网资源的指针;
URL由 协议名://主机:端口/资源 组成;
方法:
String getFile(); 获取此URL的资源名;
String getHost(); 获取此URL的主机名;
String getPath(); 获取此URL的路径部分;
int getProt(); 获取此URL的端口;
String getProtocol(); 获取此URL的协议名;
String getQuery(); 获取此URL的查询字符串部分;
URLConnection openConnection();
返回一个URLConnection对象,表示到应用程序和URL之间的通信链接;
程序可通过该URLConnection对象向URL发送请求,读取URL的资源;
InputStream openStream(); 打开与此URL的连接,并返回一个用于读取该URL资源的InputStream;
1.2 【创建一个和URL的连接,并发送请求、读取此URL所引用的资源】
1.1.1 调用URL的openConnection方法获取URLConnection对象;
1.1.2 设置URLConnection的参数和普通属性;
1.1.3 GET请求,直接URLConnection实例调用connect方法即可创建连接;
POST请求,获取URLConnection实例对应的输出流来发送请求参数;
1.1.4 读取远程资源等
package com.an.net; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection; /** * get请求 */public class GetRequestTest { public static void main(String[] args){ BufferedReader bufferedReader=null; try { URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin"); URLConnection urlConnection =url.openConnection(); urlConnection.setRequestProperty("accept","*/*"); urlConnection.setRequestProperty("connection","Keep-Alive"); urlConnection.setRequestProperty("user-agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"); urlConnection.connect(); bufferedReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); String s=null; while ((s=bufferedReader.readLine())!=null){ System.out.println(s.trim()); } }catch (Exception e){ e.printStackTrace(); }finally { try { if (bufferedReader!=null){ bufferedReader.close(); } }catch (IOException e){ e.printStackTrace(); } } }}
package com.an.net; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; /** * post请求 */ public class PostRequestTest { private static String params="fr=aladdin"; public static void main(String[] args){ PrintWriter printWriter=null; BufferedReader bufferedReader=null; try { URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416"); URLConnection urlConnection =url.openConnection(); urlConnection.setRequestProperty("accept","*/*"); urlConnection.setRequestProperty("connection","Keep-Alive"); urlConnection.setRequestProperty("user-agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"); //POST请求必须设置 urlConnection.setDoOutput(true); urlConnection.setDoInput(true); //获取urlConnection对应的输出流 printWriter=new PrintWriter(urlConnection.getOutputStream()); //发送POST请求参数 printWriter.write(params); printWriter.flush(); bufferedReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); String s=null; while ((s=bufferedReader.readLine())!=null){ System.out.println(s.trim()); } }catch (Exception e){ e.printStackTrace(); }finally { try { if (bufferedReader!=null){ bufferedReader.close(); } if (printWriter!=null){ printWriter.close(); } }catch (Exception e){ e.printStackTrace(); } } } }
原文地址:https://www.cnblogs.com/anpeiyong/p/10291169.html