网络通信之HTTP请求小结

本文介绍了HTTP请求的基本构成,包括消息行、消息头和消息体。详细阐述了GET和POST两种提交数据方式的区别,GET将数据明文附加在URL后,而POST将数据放入消息体,更适用于提交敏感信息。此外,通过Java API实现HTTP请求的步骤也被解析,包括设置请求方法、超时时间、消息头以及如何处理输入输出流。
摘要由CSDN通过智能技术生成

1. HTTP请求的组成内容

客户端发送的消息,分为三部分:消息行、消息头、消息头

  • 消息行:提交数据的方式(GET/POST)、访问资源 、使用的HTTP协议版本
  • 消息头:描述客户端或者发送内容的属性,用来给服务端进行解析,以键值对的方式保存信息,比如主机名、内容类型、内容长度等。
  • 消息体:可添加的其它数据,比如POST方式向服务端提供的数据会存放在这里。

服务端返回的消息,也分为三部分:应答行、应答头、应答体

  • 应答行:使用的HTTP协议版本 / 状态码(数值形式,表示请求资源的情况,比如404(NOT FOUND)表示请求的资源不存在,而200(OK)表示正常)
  • 应答头:基本与消息头类似,只是返回的描述属性有差异,比如应答头中有资源最后修改的时间(Last-Modified)等
  • 应答体:服务器可添加的其它数据,你可以把应答体和应答头看作是规定格式的,而应答体的内容是可以由服务端自己定义。

2. HTTP提交数据的方式:GET和POST的区别?

从结果来说,以GET方式提交数据,比如向服务端提交用户名和密码(规定以name1=value1&name2=value2),它会把数据以明文的形式追加到URL后面(前面添加一个“?“,以便于服务端解析),即游览器中地址栏后面。而POST则会把数据存放在消息体中。GET的方式向服务端提交自定义数据安全行存在隐患,所以如果想服务端获取数据一般以GET方式,而提交数据则以POST方式。

3. 如果没有浏览器这种客户端,怎么通过Java API来实现HTTP请求?

首先创建一个URL对象,称为资源定位符,它一般有协议、主机、端口、资源四部分组成,其实就是我们所说网址的形式,比如http://www.google.com/search。然后通过openConnection()方法返回一个HttpURLConnection对象,然后通过SetRequestMethod(String method)来设置GET或者POST提交方式,接着设置一些常用属性,比如:

  • setConnectTimeout(int timeout),连接超时(毫秒)。
  • setReadTimeout(int timeout),读取超时。
  • setRequestProperty(String key,String value),设置消息头。

然后,如果是POST方式提交自定义数据,则首先通过getOutputStream()返回OutputStream流,并向IO流中写入数据(数据形式:name1=value1&name2=value2,多组数据以&连接,可以视作规定。以便于服务器以比较统一的方式解析);如果只需获取数据,则不需要上面的步骤,直接以getInputStream()方法返回InputStream流,然后通过IO流的读数据的方式来返回数据。

  • getOutputStream()
  • getInputStream()
    最后通过disconnect()方法来关闭连接
  • disconnect()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值