安卓HTTP的GET请求方式获取图片

什么是HTTP:

HTTP( HyperText Transfer Protocol )超文本传输协议 ,是一种用于分布式、协作式和超媒体信息系统的应用层协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。


  1. GET方法
    GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如
    Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=�%E+��
    从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大

  1. POST方法:
    POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

HTTP协议主要特点:

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

获取图片代码:

 //需要放到子线程中
    private void DownLoadFile(){
        ///使用handleThread实现
        String downloadUrl = "";
        String savePath = "/sdcard/flowgirl.jpg";
        File file = new File(savePath);
        try {
            URL url = new URL(downloadUrl);
            if(file.exists()){
                file.delete();//如果文件存在就删除
            }
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();

            if(connection.getResponseCode() == 200){
                is = connection.getInputStream();
                bis = new BufferedInputStream(is);
                os = new FileOutputStream(savePath);
                byte[] bs = new byte[1024];
                while (bis.read(bs)!=-1){
                    os.write(bs);//写入文件
                }
                os.flush();
                Bitmap bitmap = BitmapFactory.decodeFile(savePath);

            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(is != null && os != null && bis != null){

                    //关流
                    is.close();
                    bis.close();
                    os.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_44946212/article/details/93237076
今日推荐