url地址(url地址怎么获取)

Java 网络编程:必知必会的 URL 和 URLConnection

java.net.URL 类将 URL 地址进行了封装,并提供了解析 URL 地址的基本方法,比如获取 URL 的主机名和端口号。java.net.URLConnection 则代表了应用程序和 URL 之间的通信链接,可用于读取和写入此 URL 引用的资源。

  • URI = Universal Resource Identifier,中文释义为统一资源标志符
  • URL = Universal Resource Locator,中文释义为统一资源定位符
  • URN = Universal Resource Name,中文释义为统一资源名称

URI 可以分为 URL 和 URN,或者是 URL 和 URN 的结合体(同时具备 Locator 和 Name)。URN 就好像一个人的名字,URL 就像一个人的地址。换句话说:URN 确定了身份,URL 提供了找到它的方式。

URL其实是一种资源

URL代表的是一种资源,它使用的是统一资源定位格式,形如:https://toutiao.com,其实我们还可以用URL来构造对象的,使用字符串吗?不是的,java中有大量的构造函数允许使用一个个的分串来指定URL,有了URL对象就可以通过几个不用的方法来获取URL对应的内容,没错,我说的就是网页:

 import java.net.*;
 import java.io.*;
 public class IntTest{
     public static void main(String [] args) throws Exception{
         URL url = new URL(args[0]);
         InputStream html = url.openStream();
         int c;
         do{
             c = html.read();
             if(c != -1){
                 System.out.print((char) c);
             }
         }while(c != -1);
     }
 }

或许,这是你之前没有听说过的:URLConnection

一般静态的操作就都是很容易的,使用一个URL对象读取一个URL简直不要太容易,刚才说的静态是我自己起的,其实并没有这个说法,而是我联想到数据结构,像读取这样的操作都是静态的 ,于是我在这里也算是做相同的比喻;

如果你想对HTTP事务做更多的控制呢?,比如说我们肯定需要往服务器提交一些数据,需要URL对象的 openConnection 函数,这个函数可以返回一个 URLConnection 对象,如果URL使用了HTTP协议,那么URLConnection 对象会返回一个URLConnection的子类:HttpURLConnection;

 import java.net.*;
 import java.io.*;
 public class Handin{
     public static void main(String [] args) throws Exception{
         URL url=new URL(""http//com.aaaaa.com"");//网址瞎编的
         HttpURLConnection con=(HttpURLConnection)url.openConnection();
         int c;
         con.setDoInput(true);
         con.setDoOutput(true);
         con.setrequestMethod("POST");
         con.setRequestProperty("Content-type","application/X-WWW-form-urlencoded");
         con.connect();
         PrintWriter pri=new PrintWriter{
         new OutputStreamWriter{con.getOutputStream(),"12321",true}
         pri.print("sasd"+URLEncoder.encode(args[0]+'dasda'));
         pri.flush();
         System.out.println(con.getResponseMessage());
         InputStream in=con.getInputStream();
         do{
             char x;
             c=in.read();
             x=(char)c;
             if(c!=-1){
                 System.out.print(x);
             }
         }while(c!=-1);
     }
 }

关于HttpURLConnection,获取HttpURLConnection对象只能是用http://URL(注意我这里只是写了一个格式而已)来创建,并调用HttpURLConnection对象的openConnection函数,然后把返回的URLConnection值赋给HttpURLConnection。

谁是幕后推手?

URL和URLConnection都是指派URLStreamHandler和URLConnection来干活,经过封装之后,URL对象会检查他的URL协议端口,然后调用URLStreamHandlerFactory的一个对象,这个对象主要用于创建URLStreamHandler子类,使得与指定的协议相符合;

子类URLStreamHandler创建一个相应的URLConnection对象,也解析URL,这样你可以定义用户化URL格式,对象URLConnection通常都是和服务器打交道的。

 import java.net.*;
 import java.io.*;
 public class TimeURLConnection extends URLConnection{
     private Socket con;
     public final static int de=13;
     public TimeURLConnection void connect() throws IOException{
         if(!=connected){
             int port=url.getPort();
             if(port<0) port=de;
             con=new Socket(url.getHost(),port);
             connected=true;
         }
     }
     
     public synchronized InputStream getInputStream() throws IOException{
         connect();
         return con.getInputStream();
     }
 }

本文来自假相投稿,不代表胡巴网立场,如若转载,请注明出处:https://www.hu85.com/171661.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxxxx@qq.com 举报,一经查实,本站将立刻删除。