java网络编程学习(二)

HTTP协议


1 http协议内容


Http请求内容:

(1)请求行:包含方法、路径和http版本

(2)http首部

User-Agent:浏览器类型

Host:服务器名称

Accept:客户端可以处理的数据类型

Connection: keep-alive : 希望复用socket连接

(3)空行

两个回车换行对:/r/n/r/n

(4)消息体

get没有消息体,post有消息体


Http回复内容:

(1)状态行:包含http版本,响应码和状态

响应码100-199:提供信息的响应

响应码200-299:指示成功

响应码300-399:重定向

响应码400-499:客户端错误

响应码500-599:服务端错误

(2)首部

(3)空行

(4)请求的资源


2 http方法

(1)get(查)

主要用来查询,该方法将查询参数附加到url的末尾。

(2)post(改)

post用来将资源的一个表示上传到服务器。主要用于不能重复的不安全操作。

(3)put(增)

将资源上传到一个已知URL的服务器,该方法具有幂等性,即可以重复使用这个方法不用担心它是否失败,如果两次把一个文件存到同一个位置,与只放一次相比,服务器状态一样。

(4)delete(删)

从一个指定的URL删除资源,同样具有幂等性。所以如果不确定一个删除请求是否成功,可以再次发送同一个请求。

(5)head方法

与get方法类似,不过只返回资源的首部,不返回具体数据。


3 get方法和post方法的区别

(1)get方法用于资源的查询/获取,它一般是安全和幂等的。安全是指它不会对资源进行更改,幂等是指两次请求得到的结果应该是类似的。(现实编程中这两个性质并不是严格要求的);post方法用于资源的更新。

(2)get方法将参数连接在url的后面,post方法将参数写在消息体中。所以,处理敏感数据应该使用post

(3)参数的长度问题,http并没有对get和post方法携带的参数长度做限制,不过浏览器get方法将参数加到url后面,一些浏览器会对url总长度做限制;此外,服务器也会对参数的长度做限制。一般而言,post可以携带的参数数量比get可携带的参数数量多。

(4)get只支持ascii编码,post支持二进制。

(5)get请求的数据会被缓存在浏览器,下次发送相同的请求,会直接从缓存中获取,post不会缓存。

(5)get请求可以被存储到浏览器的历史记录中,可以被收藏为书签;post方法不能被存储到浏览器历史记录中,也不能被收藏为书签。


可参考:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp


4 请求主体

首部中有两个重要的字段与主体相关


(1)Content-type:指定主体中数据的MIME媒体类型

使用最多的是application/x-www-form-urlencoded类型,表示key-value格式。除此之外,还有以下这些:

text/* :表示文本文件

image/*:表示图片

model/*:表示3D模型,如VRML文件

audio/*:表示声音

video/*:表示视频

application/*:表示二进制数据

message/*:表示协议特定的信封

multipart/*:表示多个文档和资源的容器


(2)Content-length

指示请求主体中有多少个字节。


5 Cookie

详细看博客:http://blog.csdn.net/yy_james/article/details/72453218


二 URLConnection

1 使用URLConnection的类的程序遵循以下基本步骤

(1)构造一个URL对象

(2)调用这个URL对象的openConnection()获取一个对应该URL的URLConnection对象。

(3)配置这个URLConnection。

(4)读取首部字段。

(5)获得输入流并读取数据

(6)获得输出流并写入数据

(7)关闭连接


2 超时

(1)set/getConnectTimeout(int timeout)

控制socket等待建立连接的时间,单位为毫秒。

(2)set/getReadTimeout(int timeout)

控制输入流等待数据到达的时间,单位为毫秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值