Http相关 --概念
2015-12-26 21:34
706 查看
1 http 是应用层协议是万维网交换文件(文本,声音,图像等多媒体)的基础 * * 2 http工作流程: * 1 客户端与服务器建立连接. * 2 建立连接后,客户端发送请求服务器, * 发送的信息包括请求头与请求体 * 3 服务器接受到请求之后,将信息返回客户端, * 返回的信息包括请求头与请求体 * 4 客户端显示服务器的信息在浏览器上,断开连接. * * 3 http特点: * http协议是一个无状态的协议,同一个客户端请求与上一次的请求是 * 没有对应关系.而且每次连接完成之后都会断开链接. * * 4 tcp/ip 的三次握手 * Tip建立连接的底层基础. * * 客户端首先发送一个syn信息,服务器使用syn+ack应答来表示连接, * 然后客户端再次以ack信息相应.这样,连接就建立了. * * 5 post/get: * get将请求的参数放在请求头 * post将请求的参数放在请求的实体 * * 6 返回码: * 200 客户端请求成功 * 403 服务器收到请求,但拒绝提供服务 * 404 请求资源不存在 * 500 服务器发生不可预期的错误 * * 7.http1.0 与 http 1.1 区别: * * http 1.0 每次请求都要建立新的tcp连接,链接不可复用. * http 1.1 新的请求可以在上次建立的tcp连接上发送请求 * 连接可以复用,减少三次握手的开销,提高效率. * *
/* * 使用HttpURLConnection 通过get/post 连接服务器 * / private void doPost() { /** * 如果采用post提交,则参数放在数据实体中提交 */ try { URL httpUrl=new URL(url); HttpURLConnection conn=(HttpURLConnection) httpUrl.openConnection(); //设置连接超时的时间 conn.setReadTimeout(5000); //设置连接超时的方法 conn.setRequestMethod("POST"); //传递参数 OutputStream out=conn.getOutputStream(); //内容 String content="name="+name+"&age="+age; //写入到服务器 out.write(content.getBytes()); //读取数据 BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); final StringBuffer sb=new StringBuffer(); String line; while((line=br.readLine())!=null){ sb.append(line); } handler.post(new Runnable() { @Override public void run() { //加载数据 webview.loadData(sb.toString(), "text/html;charset=utf-8", null); } }); } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } /* * * 如果采用get提交 ,则参数采用路径拼接的方式 * 采用get方式发送请求之时,对于中文字符需要进行编码处理. * */ private void doGet(){ try { url=url+" ? name="+URLEncoder.encode(name, "utf-8")+"& age= "+URLEncoder.encode(age, "urf-8"); URL httpUrl=new URL(url); HttpURLConnection conn=(HttpURLConnection) httpUrl.openConnection(); //设置连接超时的时间 conn.setReadTimeout(5000); //设置连接超时的方法 conn.setRequestMethod("GET"); //读取数据 BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); final StringBuffer sb=new StringBuffer(); String line; while((line=br.readLine())!=null){ sb.append(line); } handler.post(new Runnable() { @Override public void run() { //加载数据 webview.loadData(sb.toString(), "text/html;charset=utf-8", null); } }); } catch (Exception e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }
相关文章推荐
- Http 和TCP的关系,TCP长连接和短连接有什么区别?
- CentOS7 Core安装后常用的网络设置
- C++技术问题总结-第11篇 网络通信中主机序网络序
- Http方法之PUT
- Linux学习笔记1:配置Linux网络和克隆虚拟机并更改配置
- Linux学习笔记1:配置Linux网络和克隆虚拟机并更改配置
- 计算机网络的分类
- Java网络编程(1) Socket缓…
- CMake安装和使用 http://blog.sina.com.cn/s/blog_5aee9eaf0100y36u.html
- Python 网络编程 SocketServer
- cas入门:https形式发布cas证书制作
- CMake 使用方法 http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html
- Python 网络编程 Socket
- 网络流24题 之十四 孤岛营救问题 分层图
- TCP简介
- AsyncHttpClient
- linux内核ipv4网络部分分层结构及涉入源文件
- 使用HTTP访问网络
- Caffe 抽取CNN网络特征 Python
- linux 内核网络,数据接收流程图