Android网络(1)HttpURLConnection

网络
一、.HttpURLConnection
1.获取实例
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
2.从服务器中获取数据

onn.setRequestMethod("GET");
//连接超时
 conn.setConnectTimeout(5000);
//得到响应码
 int code = conn.getResponseCode();
 if(code == 200){
//获取输入流
InputStream is = conn.getInputStream();
//######
}
//关闭
conn.disconnect();

 

 


3.子线程相关问题(Android不允许子线程进行UI操作)
(1)创建子线程

 new Thread(){
@Override
                public void run() {
//重写run方法
//####的上方写在此处,后接

bitmap = BitmapFactory.decodeStream(is);
                            //将更改主界面的消息发送给主线程
                            message = new Message();
                            message.what = CHANGE_UI;
                            message.obj =bitmap;
                            handler.sendMessage(message);

//需使用try ...catch

}
}.start();

 

 

(2)主线程创建消息处理器

 

private Handler handler = new Handler(){
        @Override
        public void handleMessage( Message msg) {
            if(msg.what == CHANGE_UI){
                Bitmap bitmap = (Bitmap) msg.obj;
                ivPic.setImageBitmap(bitmap);
            }
            else if (msg.what == ERROR){
                Toast.makeText(MainActivity.this,"错误",Toast.LENGTH_SHORT).show();
            }
        }
    };

 

 

4.设置联网权限
<uses-permission android:name="android.permission.INTERNET"/>
//在<application的上方。

5.提交到服务器
将HTTP请求改为POST
//准备数据并给参数进行编码
conn.setRequestMethod("POST");
String data = "username=" + URLEncoder.encode("")
+ "&password=" + URLEncoder.encode("");
//设置请求头数据提交方式以及提交数据的长度,这里是以form表单的方式提交
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", data.length() + "");
//以流的形式将数据写到服务器上
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());

 

posted @ 2021-03-08 21:57  步履向前  阅读(87)  评论(0)    收藏  举报