当前课程知识点:JAVA程序设计进阶 > 第四章 网络编程(上) > 4.3 Get请求与Post请求 > Video
这一节我们将介绍
如何通过最常见的http请求get和post
来去访问互联网上的网络资源
当然用URLConnection的话
不仅仅是说可以从互联网上的资源
把它内容读过去
我们自己写的java程序
也可以发送一些信息
发给这个互联网上的资源
它所在的服务器
那我们经常在互联网写程序
要有一个get方法
所谓get方法
就是站在我们编写的java角度
我想从某一个网站上
去读取它的这个内容
那我们看怎么利用URLConnection
来去写这个get方法
我们这里是public static sendGet
sendGet方法有两个参数
一个是目标的URL地址
另外一个就是在往这个目标URL
发送请求的时候
我们有哪些参数
我们看一下这个类的第二行
String result等于空
构造这个字符串的结果是空
然后BufferedReader in
等于null等于空
然后try String urlName String=
url+?+param
就是这个参数
所以我们构造出了一个
url名字的一个字符串
紧接着我们让URL这个类
我们声明它的一个对象叫realurl
然后再调用它的构造方法new URL
然后它里面的参数
就是刚才那个URLName String这个字符串
那通过这个URL构造
就是想表示
我们想要访问的互联网上的这个资源
紧接着通过这个资源的openConnection方法
也就是realurl.openConnection
然后得到它的URLConnection对象
Connection
那紧接着我们通过Connection
我需要发送请求了
Connection.setRequestProperty
accept还有一个/
然后紧接着我们又设
Connection.set Request Property
它的这个Connection的这个值
是这个keep Alive
然后紧接着我们利用Connection
调用它的Connect方法
就和我们的URL建立了实际的连接
那建立完连接后想干什么
那还是要读取内容
因为刚才我们已经发一些请求过去
发完以后我们就要读
那为了读取内容
我们就构造一个输入流对象
那in=newBufferedReader
然后newInputStreamReader
ConnectiongetInputStream
那也就是通过我们Connection对象
获得这个输入流
然后在外面先包了一层
inputStreamReader
再往外又包一层BufferedReader
最终我们就得到了
BufferedReader的一个对象in
那下面就开始通过in来进行读取信息了
那我们先定义一个字符串line
然后while line等于inreadLine不等于空
也就是in它读一行
然后它这个不等于空
那我们读到它的这个一行的
这个字符串信息
紧接着把这个读到的信息
写到结果里面
就是result+等于line
然后我们还捕获了这个异常
catch Exception e
然后finally的话
就是说如果in不等于空的话
我们记得把这个输入流进行关闭
同时也要捕获一下异常
最后我们把这个结果result返回
所以在这个例子当中
我们就是利用了URLConnection这个类
构造了一个对我们URL对象的一个访问
然后我们是先有一个往外输出参数
然后紧接着再通过这个inputstream
来读取它的内容
除了get方法在互联网当中
我们访问这些网络资源
另外一张用的就是post方法
那post方法是说
我站在我这个java程序
我要往服务器发送请求的时候
我先发一些参数
我发一些参数
然后那服务器再响应我
再把一些相应的这个内容
给我返回过来
那我们这个过程
这个就需要通过URLConnection的
输出流来写入参数
我们看一下这个代码的例子
public static String sendPost
它有两个参数
一个是Stringurl
另外一个string param
然后第二行我们构造一个输出流
PrintWriter out等于空
我们又构造一个输入流
BufferedReader in等于空
String Result等于空
那我们看一下里面怎么去打开资源的
首先我们构造一个URL对象
realurl然后通过这个realUrl对象的
openConnection方法
获得了一个URLConnection的对象
我们把它的命名为conn
那下面的话我们通过conn这个对象
来设它的发送请求
比如setRequestProperty
accept是怎么回事
有一个setRequestProperty的
Connection为keep Alive
然后conn.setDoOutput true
就是说我这个连接对象
我确实需要往外输出的
那我要输出什么东西
就out=new PrintWriter
conn.getOutputStream
我获得了它的输出流
并且外面包上一层那个
PrintWriter这个类的对象
那下面我要跟利用这个out
我要往外发送消息了
怎么发送消息呢
就是out.print param
那这是param
就是我们要发送的这些参数
然后强制输出
out.flush让这个要发送的内容
就是真的往我们互联网上的服务器去发
发完了以后
这时候我们站在
我们这个java程序的角度
我就要等待那边的服务器给我返回信息
那我怎么获得返回的信息
这时候我又通过我的那个
Connection对象conn
然后通过它的get InputStream
得到它的输入流
然后外边我就包了inputStreamReader
再包了一层BufferReader
那就最后形成了我们一个
BufferReader对象In
那现在我利用这个in这个对象
我来一行一行的读取这个信息
读完了以后我又把这个
读完的信息写到result这个变量当中
那这个中间一些过程
也进行了捕获异常的处理
最后一行就是我们return result
也就是把我们读到的信息返回回去
所以通过这个例子大家也看到
我们用这个Connection这个对象
然后可以实现对于网络上的资源
我可以给它发送参数
然后还可以接收它的返回来的结果
那这样一个过程
就是一个典型的post请求的过程
那post请求是后面大家在学的
http的这种网络传输协议的时候
最常见的一个方法
那在java.net包当中
为了让我们的程序更好的处理
Http的这种请求
它提供了一个类
叫httpURLConnection
那里面提供了针对http请求的内容
比如说它提供了http的状态码
例如http OK 200
另外的话它还可以用来
设置我们这种常见的请求方法
就是setRequestMethod
比如get或者post等等
另外的话它也提供另外一个方法
叫getResponseCode
你可以获取我们的网络上的服务器
所返回来的Http的响应
总而言之在httpURLConnection
这个类里边
提供了非常有益的这些变量和方法
使我们非常方便的能够处理
来自http的各种请求
然后也可以通过这个类
去访问到我们互联网上的很多URL的资源
这一节我们介绍了get和post方法的原理
-1.0 导学
--Video
-1.1 线程的基本概念
--Video
-1.1 线程的基本概念--作业
-1.2 通过Thread类创建线程
--Video
-1.2 通过Thread类创建线程--作业
-1.3 线程的休眠
--Video
-1.3 线程的休眠--作业
-1.4 Thread类详解
--Video
-1.5 通过Runnable接口创建线程
--Video
-1.5 通过Runnable接口创建线程--作业
-1.6 线程内部的数据共享
--Video
-2.0 导学
--Video
-2.1 线程同步的思路
--Video
-2.2 线程同步的实现方式—Synchronization
--Video
-2.3 线程的等待与唤醒
--Video
-2.4 后台进程
--Video
-2.5 线程的生命周期与死锁
--Video
-2.6 线程的调度
--Video
-3.0 导学
--Video
-3.1 线程安全与线程兼容与对立
--Video
-3.2 线程的安全实现-互斥同步
--Video
-3.3 线程的安全实现-非阻塞同步
--Video
-3.4 线程的安全实现-无同步方案
--Video
-3.5 锁优化
--Video
-4.0 导学
--Video
-4.1 URL对象
--Video
-4.2 URLConnection对象
--Video
-4.3 Get请求与Post请求
--Video
-4.4 Socket通信原理
--Video
-4.5 Socket通信实现
--Video
-5.0 导学
--Video
-5.1 Socket 多客户端通信实现
--Video
-5.2 数据报通信
--Video
-5.3 使用数据报进行广播通信
--Video
-5.4 网络聊天程序
--Video
-6.0 导学
--Video
-6.1 Java虚拟机概念
--Video
-6.2 Java虚拟机内存划分
--Video
-6.3 Java虚拟机类加载机制
--Video
-6.4 判断对象是否存活算法及对象引用
--Video
-6.5 分代垃圾回收
--Video
-6.6 典型的垃圾收集算法
--Video
-6.7典型的垃圾收集器
--Video
-7.0 导学
--Video
-7.1 集合框架与ArrayList
--Video
-7.2 LinkedList
--Video
-7.3 HashMap与HashTable
--Video
-7.4 TreeMap与LinkedHashMap
--Video
-7.5 HashSet
--Video
-8.0 导学
--Video
-8.1 Java反射机制
--Video
-8.2 Java静态代理
--Video
-8.3 Java动态代理
--Video
-8.4 Java 反射扩展-jvm加载类原理
--Video
-8.5 Java进阶课程总结
--Video