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());
浙公网安备 33010602011771号