Http相关 --概念

来源:互联网 发布:移动云商城 源码 编辑:程序博客网 时间:2024/06/07 11:02
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.0http 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();        }    }
0 0
原创粉丝点击