Java的java.net.URL类用于请求互联网上的资源,采用HTTP/HTTPS协议,请求方法是GET方法,一般请求是静态的,少量的服务器端数据。

三种连接方法:

// 方法一

URL url = new URL("http://www.sina.com.cn"); URLConnection urlcon = url.openConnection(); InputStream is = urlcon.getInputStream(); 

// 方法二

URL url = new URL("http://www.yhfund.com.cn"); HttpURLConnection urlcon = (HttpURLConnection)url.openConnection(); InputStream is = urlcon.getInputStream(); 

// 方法三

URL url = new URL("http://www.yhfund.com.cn"); InputStream is = url.openStream();

1.使用URL类

下面通过一个示例介绍如何使用java.net.URL类:

package url;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;public class HelloWorld {public static void main(String[] args) {//Web网址String url="http://www.sina.com.cn";URL reqURL;try {reqURL=new URL(url);} catch (MalformedURLException e) {e.printStackTrace();return;}try(//打开网络通信输入流InputStream is=reqURL.openStream();InputStreamReader isr=new InputStreamReader(is,"utf-8");BufferedReader br=new BufferedReader(isr)) {StringBuilder sb=new StringBuilder();String line=br.readLine();while(line!=null){sb.append(line);sb.append('\n');line=br.readLine();}//日志输出System.out.println(sb);} catch (IOException e) {e.printStackTrace();}}}

上述代码创建URL对象,参数是一个HTTP网址。通过URL对象的openStream()方法打开输入流。

2.使用HttpURLConnection发送GET请求

由于URL类只能发送HTTP/HTTPS的GET方法请求,如果要想发送其他的情况或者对网络请求有更深入的控制,则可以使用HttpURLConnection类型。

示例代码如下:

package url;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;public class HttpURLConGET {//Web服务网址static String urlString="http://www.51work6.com/service/mynotes/WebService.php?"+"email=<此处填写在该网页注册时的邮箱>&type=JSON&action=query";public static void main(String[] args) {BufferedReader br=null;HttpURLConnection conn=null;try {URL reqURL=new URL(urlString);conn=(HttpURLConnection)reqURL.openConnection();conn.setRequestMethod("GET");//打开网络通信输入流InputStream is=conn.getInputStream();//通过is创建InputStreamReader对象InputStreamReader isr=new InputStreamReader(is,"utf-8");//通过isr创建BufferedReader对象br=new BufferedReader(isr);StringBuilder sb=new StringBuilder();String line=br.readLine();while(line!=null){sb.append(line);line=br.readLine();}//日志输出System.out.println(sb);} catch (Exception e) {e.printStackTrace();}finally {if(conn!=null){conn.disconnect();}if(br!=null){try {br.close();} catch (IOException e) {e.printStackTrace();}}}}}

注意:发送GET请求时发送给服务器的参数是放在URL的"?"之后,参数采用键值对形式。多个参数之间用“&”分隔,例如type=JSON&action=query就是两个参数。

上述代码用reqURL.openConnection()方法打开一个连接,返回URLConnetion对象。由于本次连接是HTTP连接,所以返回的是HttpURLConnection对象。URLConnection是抽象类,HttpURLConnection是URLConnection的子类。

代码中conn.setRequestMethod("GET")设置请求方法为GET方法。通过conn.getInputStream()打开输入流。通过conn.disconnect()断开连接,这可以释放资源。

3.使用HttpURLConnection发送POST请求

示例代码如下:

package url;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpURLConPOST {//Web服务网址static String urlString="http://www.51work6.com/service/mynotes/WebService.php?";public static void main(String[] args) {BufferedReader br=null;HttpURLConnection conn=null;try {URL reqURL=new URL(urlString);conn=(HttpURLConnection)reqURL.openConnection();conn.setRequestMethod("POST");//设置请求过程中可以传递参数给服务器conn.setDoOutput(true);String param=String.format("email=%s&type=%s&action=%s","<此处填写在该网页注册时的邮箱>","JSON","query");//设置参数DataOutputStream dStream=new DataOutputStream(conn.getOutputStream());dStream.writeBytes(param);dStream.close();//打开网络通信输入流InputStream is=conn.getInputStream();//通过is创建InputStreamReader对象InputStreamReader isr=new InputStreamReader(is,"utf-8");//通过isr创建BufferedReader对象br=new BufferedReader(isr);StringBuilder sb=new StringBuilder();String line=br.readLine();while(line!=null){sb.append(line);line=br.readLine();}//日志输出System.out.println(sb);} catch (Exception e) {e.printStackTrace();}finally {if(conn!=null){conn.disconnect();}if(br!=null){try {br.close();} catch (IOException e) {e.printStackTrace();}}}}
}

上述代码URL后面不带参数,这是因为要发送的是POST请求,POST请求参数是放在请求体中。

4.案例:下载程序

Downloader.java代码如下:

package url;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class Downloader {//Web服务网址private static String urlString="http://ss0.bdstatic.com/5aV1bjqh_Q23odcf/"+"static/superman/img/logo/bd_logol_31bdc765.png";public static void main(String[] args) {download();}//下载方法private static void download() {HttpURLConnection conn=null;try {//创建URL对象URL reqURL=new URL(urlString);//打开连接conn=(HttpURLConnection)reqURL.openConnection();try(//从连接对象获得输入流InputStream is=conn.getInputStream();BufferedInputStream bin=new BufferedInputStream(is);//创建文件输出流OutputStream os=new FileOutputStream("download.png");BufferedOutputStream bout=new BufferedOutputStream(os)){byte[] buffer=new byte[1024];int bytesRead=bin.read(buffer);while(bytesRead!=-1){bout.write(buffer,0,bytesRead);bytesRead=bin.read(buffer);}}catch(IOException e) {}System.out.println("下载完成。");} catch (Exception e) {e.printStackTrace();}finally {if(conn!=null){conn.disconnect();}}}}

【Java】使用URL类访问互联网资源相关推荐

  1. 通过java.net.URL类抓取某个网页的内容 选择自 cqq 的 Blog

    /**  文件名 : OpenUrl.java  描述 :通过 java.net.URL 类访问一个页面,并且返回结果 **/ import java.net.*; import java.io.*; ...

  2. java.net.Url类的应用 以及URL的学习

    java.net.Url类的应用 认识IP.认识URL是进行网络编程的第一步.java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源.     一.认识URL ...

  3. 对Java的URL类支持的协议进行扩展的方法

    转载自   对Java的URL类支持的协议进行扩展的方法 JAVA默认提供了对file,ftp,gopher,http,https,jar,mailto,netdoc协议的支持.当我们要利用这些协议来 ...

  4. java URL java.net.URL类的使用 详细介绍 URL转义 解决URL中文字符

    类 URL 代表一个统一资源定位符,它是指向互联网"资源"的指针.资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,也就是我们常说的域名.浏览器访问地址. 在Java中就 ...

  5. java.net.Url类的应用

    认识IP.认识URL是进行网络编程的第一步.java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源.      一.认识URL 类 URL 代表一个统一资源定 ...

  6. 防盗链——防止其他页面通过url直接访问本站资源

    防盗链产生效果描述: 在页面中引入一个链接,在页面中点击访问这个链接(注:直接页面通过浏览器打开是无效的,需要通过服务器访问页面) 而通过地址栏与直接打开页面(不通过服务器)直接访问是返回正常的页面. ...

  7. Java 使用java的URL类通过url下载网络资源

    主要用到的类 地址类: URL http类: HttpURLConnection 输入流: InputStream 输出流: FileOutputStream 上代码 package com.demo ...

  8. java 打开url连接访问不了,android 应用Java自带的HttpURLConnection 连接网络 读取返回数据...

    android 使用Java自带的HttpURLConnection 连接网络 读取返回数据 @Override protected void onCreate(Bundle savedInstanc ...

  9. java socket 获取网页源代码_通过java.net.Socket 类抓取网页内容

    /** 文件名 : Firstsocket.java 描述 :通过 java.net.Socket 类访问一个web页面,并且返回结果 作者: 慈勤强 cqq1978@yeah.net 参考:http ...

最新文章

  1. node 模块化 require expores,简易实现原理。
  2. python API docs
  3. python怎么实现音乐快进,python将音频进行变速的操作方法
  4. 海思Hi3516A(5)3D降噪
  5. aws集群重启_使用自动伸缩组在AWS中运行安全数据库集群
  6. amoeba mysql读写分离_Mysql 实现读写分离的详细教程(amoeba)
  7. hadoop权威指南 读书笔记
  8. 当《流浪地球》冲过2亿:中国的科幻大片为什么来得这么晚?
  9. python第一次考试_python 全栈开发,Day16(函数第一次考试)
  10. 基于STM32F103ZET6的多路复用模拟开关设计
  11. 在线ico图标制作、python代码实现ico格式转换
  12. MATLAB 手把手带你制作第一个APP designer程序(电子词典)
  13. 视频网站开发:JavaWeb做一个带自定义小表情的评论功能
  14. 这样做老板,企业才发展!
  15. 极验点选验证码位置识别(一):点选验证码位置识别技术总览
  16. 基于html5动画效果毕业论文,毕业设计(论文)-基于HTML5和CSS3的响应式网页制作.doc...
  17. linux脚本读文件的值,shell脚本如何从json文件读取一个某个值
  18. 2021-08-11王汕8.12黄金TD走势外汇黄金价格,现货白银TD投资操作策略
  19. [数据结构]图的思维导图
  20. 大牌网站都在用的字体,专治选择困难症!|附字体

热门文章

  1. Accelerated C++ 习题答案
  2. [Java] 蓝桥杯ALGO-148 算法训练 5-1最小公倍数
  3. [Java] 蓝桥杯ADV-184 算法提高 素数求和
  4. 【note】软件体系结构(6-10章)
  5. 【iOS开发】理解IBOutlet、Outlet、referencing outlet、outlet connection
  6. 解决librdkafka 报WARN:Protocol read buffer underflow
  7. Jenkins构建jmeter进行接口测试的一些配置
  8. 暴力破解sshd服务的密码的小技巧
  9. java拷贝构造函数
  10. java 读取使用keytool生产的keystore文件