美文网首页
HttpURLConnection

HttpURLConnection

作者: 不会敲代码的好代码 | 来源:发表于2018-07-30 14:59 被阅读28次

    一、 什么是HttpURLConnection

    HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。

    HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:

    int getResponseCode(); // 获取服务器的响应代码。
    String getResponseMessage(); // 获取服务器的响应消息。
    String getResponseMethod(); // 获取发送请求的方法。
    void setRequestMethod(String method); // 设置发送请求的方法。
    

    二、 如何使用HttpURLConnection

    HTTP请求方法有8种,分别是GET、POST、DELETE、PUT、HEAD、TRACE、CONNECT 、OPTIONS。其中PUT、DELETE、POST、GET分别对应着增删改查,对于移动开发最常用的就是POST和GET了。

    GET:请求获取Request-URI所标识的资源
    POST:在Request-URI所标识的资源后附加新的数据
    HEAD:请求获取由Request-URI所标识的资源的响应消息报头
    PUT: 请求服务器存储一个资源,并用Request-URI作为其标识
    DELETE :请求服务器删除Request-URI所标识的资源
    TRACE : 请求服务器回送收到的请求信息,主要用于测试或诊断
    CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    OPTIONS :请求查询服务器的性能,或者查询与资源相关的选项和需求

    通过一个获取网络图片的功能进行实现:
    在主线程Handler处理

    private Handler mHandler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                if(msg.what == SUCCESS){
                    Bitmap bitmap = (Bitmap)msg.obj;
                    imageView.setImageBitmap(bitmap);
                }else if(msg.what == FAILED){
                    Toast.makeText(LoginActivity.this,"显示错误",Toast.LENGTH_SHORT).show();
                }
            }
        };
    

    在子线程中进行图片下载

    final String imageUrl = "图片的网络地址";
                    new Thread(){
                        @Override
                        public void run() {
                            try {
                                URL url = new URL(imageUrl);
                                HttpURLConnection connection = (HttpURLConnection)url.openConnection();//得到网络访问对象
                                connection.setRequestMethod("GET");//设置请求方式
                                connection.setConnectTimeout(5000);//设置超时时间
                                int code = connection.getResponseCode();
                                if(code ==200){//正常响应
                                    InputStream is = connection.getInputStream();
                                    Bitmap bitmap = BitmapFactory.decodeStream(is);
                                    Message msg = new Message();
                                    msg.what = SUCCESS;
                                    msg.obj = bitmap;
                                    mHandler.sendMessage(msg);
                                }else {
                                    Message msg = new Message();
                                    msg.what = FAILED;
                                    mHandler.sendMessage(msg);
                                }
                            } catch (MalformedURLException e) {
                                e.printStackTrace();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();
    

    相关文章

      网友评论

          本文标题:HttpURLConnection

          本文链接:https://www.haomeiwen.com/subject/bycfvftx.html