6.3. URL与URLConnection

码界破浪使
• 阅读 786

1. 什么是URL?

URL(Uniform Resource Locator,统一资源定位符)是一个指向互联网上某个资源的地址。URL通常包括以下几个部分:协议、主机名、端口号(可选)和资源路径。例如,https://www.example.com:80/index.html是一个URL,其中https是协议,www.example.com是主机名,80是端口号,/index.html是资源路径。

2. Java中的URL类

在Java中,java.net.URL类可以用于表示一个URL。URL类提供了一些方法,以便我们可以轻松地访问和操作URL的各个部分。以下是一些常用方法:

  • URL(String spec):根据指定的字符串创建一个URL对象。
  • URL(String protocol, String host, int port, String file):根据指定的协议、主机名、端口号和文件名创建一个URL对象。
  • String getProtocol():获取URL的协议部分。
  • String getHost():获取URL的主机名部分。
  • int getPort():获取URL的端口号部分。
  • String getFile():获取URL的文件(资源路径)部分。

3. 使用URL读取网络资源

使用URL类,我们可以轻松地访问和读取互联网上的资源。以下是一个简单示例,用于读取网页的内容:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class URLExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.example.com/");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine);
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. 什么是URLConnection?

java.net.URLConnection类表示应用程序和URL之间的通信链接。它提供了一组方法,用于读取和写入网络资源的数据。URLConnection类的常用方法有:

  • void connect():建立到URL引用的资源的通信链接(如果尚未建立这样的连接)。
  • InputStream getInputStream():获取一个输入流,用于从URLConnection读取数据。
  • OutputStream getOutputStream():获取一个输出流,用于向URLConnection写入数据。
  • void setDoOutput(boolean dooutput):设置是否允许输出数据。 默认为false。
  • void setDoInput(boolean doinput):设置是否允许输入数据。 默认为true。

5. 使用URLConnection读取和写入网络资源

以下是一个简单的示例,演示如何使用URLConnection从网络资源读取数据:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class URLConnectionExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.example.com/");
            URLConnection connection = url.openConnection();

            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine);
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

下面的示例演示了如何使用HttpURLConnection(URLConnection的子类)向服务器发送POST请求并获取响应:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpURLConnectionPOSTExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.example.com/login");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setDoInput(true);

            String postData = "username=user&password=pass";
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(postData.getBytes("UTF-8"));
            outputStream.flush();
            outputStream.close();

            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine);
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们首先创建了一个HttpURLConnection对象,并设置请求方法为POST。然后,我们通过调用setDoOutput(true)setDoInput(true)允许输入输出。接下来,我们将POST数据写入输出流,然后从输入流中读取服务器响应。

这就是关于Java网络编程中的URL和URLConnection的介绍。希望这些示例和解释能帮助你更好地理解这个概念。祝你学习愉快!
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

6.3. URL与URLConnection

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springboot2.0入门(三)
一、RESTFul风格API  1、优点:   1.)看Url就知道要什么资源2.)看httpmethod就知道针对资源干什么3.)看httpstatuscode就知道结果如何!(https://img2018.cnblogs.com/blog/1675975/201910/1675975201910041339307
Stella981 Stella981
3年前
Django REST
一.什么是RESTfulREST与技术无关,代表的是一种软件架构风格,REST是RepresentationalStateTransfer的简称,中文翻译为“表征状态转移”REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征
Stella981 Stella981
3年前
CodeIgniter的URL URI
\\\\\\\\\\\\\\\\\\\\\\\\URI,是uniformresourceidentifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniformresourcelocator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locat
Wesley13 Wesley13
3年前
HTTP协议
URI与URL有什么不同呢?URI:UniversalResourceIdentifier统一资源标志符URL:UniversalResourceLocator统一资源定位器URI是用来唯一地确定资源的表示方式,只要资源能唯一确定,则可以算作一种URIURL是用定位的方式来确定资源的表示方式,比如常见的http://www.googl
Wesley13 Wesley13
3年前
URL编码以及get和post请求乱码问题
1. 什么是URL编码。URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value,将他们以name/value编码方式作为URL的一部分或者分离的发送到服务器上。2. URL编码规则。每对name/value由&分开,每对来自表单的name/value用分开。如果用户没有输入值的那个
Stella981 Stella981
3年前
Django rest
REST与技术无关,代表的是一种软件架构风格,REST是RepresentationalStateTransfer的简称,中文翻译为“表征状态转移”REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态REST与技术无关,代表
Stella981 Stella981
3年前
CouchDB学习
APIAPIURL路径可以指定访问CouchDB服务器的某个组件。URL请求结果包括标识和访问的数据库中的高效的描述字段。与所有URL一样,各个组件之间用正斜杠分隔。通常,以\_(下划线)字符开头的URL组件和JSON字段表示服务器或返回的对象中的特殊组件或实体。例如,URL片段/_all_dbs获取CouchDB实例中所有数据库的列表
Stella981 Stella981
3年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R
Stella981 Stella981
3年前
Spring MVC REST 风格的 URL
前言  本文主要内容为REST风格的URL。REST  REST(RepresentationalStateTransfer)。(资源)表现层状态转化。它是一种架构风格,用url来访问网络上的资源。  ●资源(Resources):网络上的一个实体,即网络上的一个具体的信息。比如一段文本、一张
Easter79 Easter79
3年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R
混世魔王 混世魔王
2年前
从url的标准构成看访问皕杰报表的url组成
什么是URL?URL是英文UniformResourceLocator的简写,译为统一资源定位器。URL为每一页网页确定了唯一的网络地址。URL包含的信息定位了文件的位置以及指定了浏览器应该怎么处理它。它是由蒂姆·伯纳斯李发明用来作为万维网的地址的,现在它