使用网址连接类
读取网址
原文:https://www . geesforgeks . org/reading-URL-using-URL connection-class/
在之前的文章中,我们看到了如何创建一个 URL 对象,获取互联网上任何资源的信息。但是仅仅获得状态信息并不是真实世界应用的真正动机。检索信息、处理信息并将结果发送回服务器,或者只是显示从服务器检索到的所需信息,这就是我们的目标。例如,考虑一个小应用程序,它要求用户输入电影名称,然后返回电影的“imdb”评级或返回与该电影相关的所有链接。所有这些都可以通过使用 URLConnection 类来实现。
什么是 URLConnection 类? URLConnection 是一个抽象类,它的子类构成了用户应用程序和网络上任何资源之间的链接。我们可以使用它来读取/写入由 URL 对象引用的任何资源。
主要有两个子类扩展了 URLConnection 类-
- HttpurlConnection: 如果我们连接到任何使用“http”作为协议的 URL,那么使用 HttpURLConnection 类。
-
JarURLConnection: If however, we are trying to establish a connection to a jar file on the web, then JarURLConnection is used.
一旦建立了连接,并且我们有了一个 URLConnection 对象,我们就可以使用它来读取或写入或获取有关页面/文件上次修改时间、内容长度等的进一步信息。 重要方法
- URL connection openConnection():打开到指定 URL 的连接。
- 对象 getContent(): 检索 URLConnection 的内容。
- 映射<字符串,列表> getHeaderFields(): 返回包含 http 头中各种头字段值的映射。
- getContentEncoding(): 返回内容编码头字段的值。
- getContentLength(): 返回内容头字段的长度。
- getDate(): 返回表头字段的日期值。
- getHeaderField(int i): 返回表头第 i 个索引的值。
- getHeaderField(字符串字段):返回标题 中名为“Field”的字段的值要获得所有标题字段的列表,读取此。
- output stream getoutput stream():将输出流返回到此连接。
- InputStream getInputStream():将输入流返回到这个打开的连接。
- setallowserinteraction(布尔值):设置为 true 意味着用户可以与页面交互。默认值为真。
- 设置默认用户缓存(布尔值):将用户缓存字段的默认值设置为给定值。
- setDoInput(布尔值):设置是否允许用户输入。
- setDoOutput(布尔值):设置是否允许用户在页面上书写。默认值为 false,因为大多数 url 不允许写入。
让我们看一个示例程序,它使用上述方法来显示标题字段,并将整个页面的源代码打印到控制台窗口上。
```java //Java Program to illustrate reading and writing // in URLConnection Class import java.io.; import java.net.; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map;
public class URLConnectionclass { public static void main(String[] args) { try { URL url = new URL("https://www.geeksforgeeks.org/java");
//open the connection to the above URL. URLConnection urlcon = url.openConnection();
//Executing the below line would print the value of // Allow User Interaction field. // System.out.println(urlcon.getAllowUserInteraction());
//Executing the below line would print // the value of Content Type field. // System.out.println(urlcon.getContentType());
//Executing the below line would print the value // of URL of the given connection. // System.out.println(urlcon.getURL());
//Executing the below line would // print the value of Do Input field. // System.out.println(urlcon.getDoInput());
//Executing the below line would // print the value of Do Output field. // System.out.println(urlcon.getDoOutput());
//Executing the below line would // print the value of Last Modified field. // System.out.println(new Date(urlcon.getLastModified()));
//Executing the below line would // print the value of Content Encoding field. // System.out.println(urlcon.getContentEncoding());
//To get a map of all the fields of http header Map> header = urlcon.getHeaderFields();
//print all the fields along with their value. for (Map.Entry> mp : header.entrySet()) { System.out.print(mp.getKey() + " : "); System.out.println(mp.getValue().toString()); } System.out.println(); System.out.println("Complete source code of the URL is-"); System.out.println("---------------------------------");
//get the inputstream of the open connection. BufferedReader br = new BufferedReader(new InputStreamReader (urlcon.getInputStream())); String i;
//print the source code line by line. while ((i = br.readLine()) != null) { System.out.println(i); } }
catch (Exception e) { System.out.println(e); } } } ```
输出:
```java Keep-Alive : [timeout=5, max=100] null : [HTTP/1.1 200 OK] Server : [Apache/2.4.18 (Ubuntu)] Connection : [Keep-Alive] Last-Modified : [Wed, 16 Nov 2016 06:49:55 GMT] Date : [Wed, 16 Nov 2016 10:58:34 GMT] Accept-Ranges : [bytes] Cache-Control : [max-age=3] ETag : ["10866-541657b07e4d7"] Vary : [Accept-Encoding] Expires : [Wed, 16 Nov 2016 10:58:37 GMT] Content-Length : [67686] Content-Type :
Complete source code of the URL is-
...source code of the page...
```
上述过程涉及的步骤:
- 网址创建:使用任何给定的构造函数创建一个网址对象
- 本条
- 创建对象:调用 openConnection()调用,创建 URLConnection 的对象。
- 显示内容:或者使用上面创建的对象显示关于资源的信息,或者使用 bufferedReader 将文件的内容读/写至控制台,并使用 getInputStream()方法输入打开连接的流。
- 关闭流:完成后关闭输入流。
参考-https://docs . Oracle . com/javase/7/docs/API/Java/net/urlconnection . html
本文由里沙布·马赫塞供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处