UN4L4——HTTP下载数据
UN4L4——HTTP下载数据
HTTP下载数据
-
Head
请求类型:主要用于获取文件的一些基础信息 可以用于确定文件是否存在 -
Get
请求类型:主要用于传递信息给服务器,用于获取具体信息,服务器返回的信息,可以通过Response
中的流来获取
用Get
请求时,可以在连接中携带一些额外参数(在链接后面加上:?参数名=参数值&参数名=参数值&参数名=参数值&...
)
正常的http服务器应用程序,都会去解析Get
请求时连接中的参数进行逻辑处理(后端程序的工作) -
我们主要要掌握的知识点:
- 额外参数按格式书写
- 通过
response
对象中的流来获取返回的数据(数据的类型多种多样,可以是文件、自定义消息等等,我们按照规则解析即可)
-
在和http服务器通信时,我们经常会使用额外参数的形式传递信息,特别是以后和一些运营平台对接时
-
文件下载功能和Ftp非常类似,只是其中使用的类、协议、请求类型不同而已
检测资源可用性
首先创建一个HttpWebRequest
对象,Create
方法传入要检测的资源的地址
操作命令使用WebRequestMethods.Http.Head,设置请求的超时时间
然后获取HttpWebResponse
对象,通过HttpWebResponse
对象的状态码来确认是否存在资源
还可以通过HttpWebResponse
对象检测资源的长度和类型,获取完毕后就需要关闭HttpWebResponse
对象
1 | try |
下载资源
检测资源可用性后,就可以下载资源
同样新创建一个HttpWebRequest
对象,Create
方法传入要下载的资源的地址,
设置操作命令为WebRequestMethods.Http.Get,设置请求的超时时间
然后获取HttpWebResponse
对象,通过HttpWebResponse
对象的状态码来确认是否存在资源
确认存在资源后,创建一个文件流,并从HttpWebResponse
对象获取下载流,
声明一个字节数组,从下载流获取数据,再将数据写入到文件流内,循环执行以上逻辑直到下载流内不再有新数据
下载完后,关闭下载流、文件流和HttpWebResponse
对象
1 | try |
Get请求类型携带额外信息
我们在进行HTTP通信时,可以在地址后面加一些额外参数传递给服务端,一般在和短连接游戏服务器通讯时,需要携带额外信息
举例:http://www.aspxfans.com:8080/news/child/index.asp?boardID=5&ID=24618&page=1
这个链接可以分成几部分:
-
协议部分:取决于服务器端使用的哪种协议
-
http://
—— 普通的http超文本传输协议 https://
—— 加密的超文本传输协议
-
-
域名部分:
www.aspxfans.com
,也可以填写服务器的公网IP地址 -
端口部分:
8080
,可以不写,如果不写默认为80
-
虚拟目录部分:
news/child/
,域名后的/
开始,到最后一个/
之前的部分 -
文件名部分:
index.asp
,?
之前的最后一个/
后的部分 -
参数部分:
boardID=5&ID=24618&page=1
?
之后的部分就是参数部分,多个参数用&
分隔开,这里有三个参数-
boardID = 5
-
ID = 24618
page = 1
-
我们在和服务端进行通信时,只要按照这种规则格式进行通信,就可以传递参数给对象,主要可用于:
- web网站服务器
- 游戏短连接服务器
等等