简介HTTP协议及及应用

1、概述

  Web客户端(或浏览器)和服务器之间的交互用的是一个基于本文的应用级协议,叫做HTTP。

  客户端利用TCP发起一个HTTP请求到服务器上指定端口(默认端口为80),服务器响应所请求的内容,并关闭连接。对于Web客户端和服务器而言,内容是与一个MIME类型相关的字节序列。常用的MIME(多用途的网际邮件扩充协议)类型有:text/html(HTML页面)、text/plain、application/postscript、image/gif、image/jpeg(JPEG格式编码的二进制图像)。

  Web服务器以两种不同的方式向客户端提供内容:

    *取一个磁盘文件,并讲它的内容返回给客户端,即服务静态内容。

    *运行一个可执行文件,并将它的输出返回给客户端,即服务动态内容。

  2、About URL

  由上文可见Web服务器返回的内容都是和它管理的文件相关连的,而每一个文件都有一个唯一的名字,叫做URL(通用资源定位符)。

如,http://www.google.com:80/index.html  表示主机www.google.com上的一个名为index.html的HTML文件,它是由一个监听端口80的Web服务管理的。(那么问题来了,为啥只输入"http://www.google.com"也可以访问内容?因为浏览器在后面添加了"/",传给服务器后,服务器又拓展为某个默认的主页。而端口号是可选的,默认为80)。

可执行文件的URL可以在文件后包括程序参数,用"?"来分割文件名和参数,每个参数都用"&"字符分隔开。确定一个URL指向的是静态还是动态内容没有标准的规则。一种常见的方法是,将他们放在不同组目录下。

  3、HTTP事务

  3.1 HTTP请求,

  在HTTP/1.0中只定义了GET、POST和HEAD三种方法(也叫“动作”),来操作指定的资源。

  而HTTP/1.1协议将其扩展到了八种,包括:

  • POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
  • GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
  • OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用‘*‘来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
  • HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部份。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
  • PUT:向指定资源位置上传其最新内容。
  • DELETE:请求服务器删除Request-URI所标识的资源。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。

其中GET和POST方法最为常见:

GET方法常用来取得HTML文档或图形,或根据用户提交的搜索项目取得搜索结果。GET请求在URL中向服务器发信息,如,fredzzt.cn/search?name=value&name1=value1。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。

POST方法是将信息发送到服务器上,如验证码或从用户输入表单中收集的数据。POST方法以HTTP消息发送表单数据(而不是URL),由于将数据嵌入HTTP消息中,从而对用户隐藏更加安全。

二者的更多区别:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

  3.2 HTTP响应

  HTTP通过一个三位正整数,指明对请求的处理。常见的有404、400等。详见:http://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81

  

  4、Android的HTTP API

  当你希望你的app连接到Internet时,你都需要在Manifest.xml中包含android.permission.INTERNET权限。

  4.1 Apache HTTP客户端类

  适合于Web浏览器,并且功能丰富。

  包括DefaultHttpClient和AndroidHttpClient,二者主要有以下几点区别:首先,AndroidHttpClient是在2.2版本才引入的;其次,AndroidHttpClient容许SSL管理,有简单的方法来指定UserAgent;再次,他们的连接超时和套接字超时的默认值不同;最后,他们生成实例的方式不同,DefaultHttpClient client = new DefaultHttpClient();    AndroidHttpClient client = AndroidHttpClient.newInstance(null);

  用DefaultHttpClient实现GET和POST:

  4.1.1GET请求时你只要指定URL 

    HttpClient client = new DefaultHttpClient();
    String getURL = "http://www.google.com/getrequest";
    HttpGet get = new HttpGet(getURL);
    try {
      HttpResponse responseGet = client.execute(get);
    } catch (IOException e) {
      e.printStackTrace();
    }

  4.1.2POST请求将数据作为请求的有效载荷的一部分

  

    HttpClient client = new DefaultHttpClient();
    String postURL = "http://www.google.com";
    HttpPost post = new HttpPost(postURL);
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("key1","value1"));
    try {
      UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params, HTTP.UTF_8);
      post.setEntity(ent);
      HttpResponse responsePOST = client.execute(post);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    } catch (ClientProtocolException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

  除非服务器响应,否则execute调用不会返回,即引起阻塞。所以,应其他线程中运行HTTP操作;

  4.2 HttpURLConnection类

  HttpURLConnection是适合在2.2版本之后版本使用的轻量级客户端。

  用HttpURLConnection实现GET:

    URL url = null;
    HttpURLConnection urlConnection = null;
    try {
      url = new URL("http://www.google.com");
      urlConnection = (HttpURLConnection)url.openConnection();      //建立连接
      int statusCode = urlConnection.getResponseCode();
      InputStream in = new BufferedInputStream(urlConnection.getInputStream());
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }finally {
      urlConnection.disconnect();
    }

时间: 2024-10-13 00:33:01

简介HTTP协议及及应用的相关文章

MQTT协议-MQTT协议简介及协议原理

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布.MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务.做为一种低开销.低带宽占用的即时通讯协议,使其在物联网.小型设备.移动应用等方面有较广泛的应用. MQTT协议特点 MQTT协议原理 2.1 MQTT协

SPICE协议-----基本简介及普通协议定义

1  SPICE协议简介 SPICE协议定义了一组协议消息来访问.控制.和接收通过网络从远程计算机设备(如:键盘.视频.鼠标)的操作,并回复发送输出.控制设备既可以在客户端,也可以在服务端.另外,协议定义了一组支持远程服务器从一个网络地址迁移到另一个网络地址.加密传输数据,有一个例外,在选择加密方法上比较灵活.SPICE使用简单的消息传递和不依赖于任何RPC标准或特定的传输层. SPICE通信会话分为多种沟通通道道(每个通道针对一个远程设备)为了有能力控制通信和执行根据通道类型的消息(如QOS加

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第2章.HTTP协议简介

第2章--HTTP协议简介 HTTP协议简介 Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟踪调试一次HTTP请求. HTTP protocol: 请求响应式协议: client -->  server : HTTP 请求 client <--  server : HTTP 响应 一个HTTP请求和一个HTTP响应 -->  一次HTTP事务 任意两次HTTP事务都是indepen

python 全栈开发,(web应用,http协议简介)

一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端/服务器端程序,也就是说这类程序一般独立运行.而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助谷歌,火狐等浏览器来运行.WEB应用程序一般是B/S模式.Web应用程序首先是"应用程序",和用标准的程序语言,如java,python等编写出来的程序没有什么本质上的不同.在网络编程

网络的分层协议总结

OSI七层模型OSI 中的层            功能                                                        TCP/IP协议族 应 用层                 文件传输,电子邮件,文件服务,虚拟终 端         TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层                 数据格式化,代码转换,数据加密                                   

HTTP 简介 HTTP 工作原理 HTTP三点注意事项:

HTTP 简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议.. HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). HTTP 工作原理 HTTP协议工作于客户端-服务端架构为上.浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求. Web服务器有:Apache服务器,IIS服务器(

netty高级篇(3)-HTTP协议开发

一.HTTP协议简介 应用层协议http,发展至今已经是http2.0了,拥有以下特点: (1) CS模式的协议 (2) 简单 - 只需要服务URL,携带必要的请求参数或者消息体 (3) 灵活 - 任意类型,传输内容类型由HTTP消息头中的Content-Type加以标记 (4) 无状态 - 必须借助额外手段,比如session或者cookie来保持状态 1.1 HTTP请求消息(HttpRequest) 客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line

WebSocket协议

websocket 简介 (2013-04-09 15:39:28) 转载▼   分类: websocket 一 WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safrie,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chrome12就已经开始支持,随着协议草案的不断变化,各个浏览器对协议的实现也在不停的更新.该协议还是草案,没有成为标准,不过成为标准应该只是时间问题了,从WebSocket草案的提出到现在

HTTP协议(1)-------- 网络编程

1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等. 在了解HTTP如何工作之前,我们先了解计算机之间的通信. 2. 计算机相互之间的通信 互联网的关键技术就是TCP/IP协议.两台计算机之间的通信是通过TCP/IP协议在因特网上进行的.