一、 什么是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();
网友评论