HTTP传输协议详解(简单易懂)

前言

HTTP: HyperText Transfer Protocol超文本传输协议,是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准;属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。

一、主要特点

1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

二、主要功能详解

1.HTTP访问入口:通过特殊的URL来定位网络资源
格式:http://host[:port][abs_path]
其中:
http:表示要通过HTTP协议来定位网络资源。
  host:表示合法的Internet主机域名或IP地址(以点分十进制格式表示);
  port:用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。
   如果port是空,则使用缺省的端口80。当服务器的端口不是80的时候,需要显式指定端口号。
  abs_path:指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出
abs_path,那么当它作为请求URI时,必须以“/”的形式给出。通常这个工作浏览器就帮我们完
成了。

2.HTTP的请求方式
http请求由三部分组成,分别是:请求行、消息报头、请求正文
主要包含有八中请求方式:
(1)OPTIONS 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送测试服务器功能(允许
客户端查看服务器性能)
(2)GET 向特定资源发出请求(请求指定页面信息,并返回实体主体)
(3)POST 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有
资源的修改
(4)PUT 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
(5)HEAD 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求
类似,返回的响应中没有具体内容,用于获取报头)
(6)DELECT 请求服务器删除request-URL所标示的资源
(请求服务器删除页面)
(7)TRACE 回显服务器收到的请求,用于测试和诊断
(8)CONNECT HTTP/1.1协议中能够将连接改为管道方式的代理服务器
一般最常用的是GET、POST方法的请求。

最常用的案例:
(1)请求post方式:
注意一下:在客户端请求访问服务后台使用的时候,客户端提交的数据必须放在消息主体中(entity-body),协议的数据 编码方式可以由开发者自行设定;在服务端通常是根据请求头(headers)中的Content-Type字段来获取请求中的消息主体使用的方式编码,然后再根据其编码方式进行解析消息主体。

public  String getHttpResponse(String url,String param){
   
	
/*	DefaultHttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
   JSONObject response = null;
    try {
        StringEntity s = new StringEntity(json.toString());
        s.setContentEncoding("UTF-8");
       s.setContentType("application/json");
        post.setEntity(s);
        HttpResponse res = client.execute(post);
        if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
            HttpEntity entity = res.getEntity();
            String result = EntityUtils.toString(res.getEntity());
           response = JSONObject.fromObject(result);
        }
   } catch (Exception e) {
       throw new RuntimeException(e);
    }
    return response.toString();
}*/
	try {
   	
		//请求http请求连接
		URL postUrl=new URL(url);
		HttpURLConnection httpurlConn = (HttpURLConnection) postUrl.openConnection() ;
		httpurlConn.setRequestMethod("POST");
		httpurlConn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
		httpurlConn.setRequestProperty("Connection", "Keep-Alive");
		httpurlConn.setRequestProperty("Content-Length", "0");
		httpurlConn.setDoInput(true);//是否輸出參數
		httpurlConn.setDoOutput(true);//是否輸入參數
		DataOutputStream dosDataOutputStream=new DataOutputStream(httpurlConn.getOutputStream());
		dosDataOutputStream.write(param.getBytes("UTF-8"));
		dosDataOutputStream.flush();
		dosDataOutputStream.close();
		httpurlConn.connect();//开始连接
		//获取连接response响应
		if(httpurlConn.getResponseCode()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值