HttpURLConnection

一、 什么是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)