简单的网络基础应用
get请求与post请求的区别
HttpURLConnection是java的标准类,可发送get请求和post请求,这里说下几大区别:
GET请求是从服务器上获取数据,POST请求是向服务器传送数据。
GET的请求参数放在URL链接中,POST的请求参数放在body中。
GET的URL会有长度上的限制,则POST的数据则可以非常大。
POST比GET安全,因为数据在地址栏上不可见。
HttpUrlConnection请求网络数据实例
我们来简单的做一个请求网络数据的实例,首先,我们定义一个按钮,通过点击按钮发送请求
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="访问网络"
android:id="@+id/btn_main"/>
我会将每一步的步骤较为详细的写到代码中
try {
//创建URL地址对象
URL url = new URL("https://www.baidu.com/");
//创建Connection对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//创建输入流对象
InputStream inputStream = connection.getInputStream();
//创建Reader对象
InputStreamReader reader = new InputStreamReader(inputStream);
//创建BufferedReader对象
BufferedReader bufferReader = new BufferedReader(reader);
//开始读取
String temp = "";
StringBuffer stringBuffer = new StringBuffer();
while ((temp = bufferReader.readLine()) != null) {
stringBuffer.append(temp);
Log.e(stringBuffer.toString(),"大笨妞");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
通过这段代码简单的请求网络数据,这里要注意,网络请求是一个耗时操作,所以不能写到主线程中,我们通过子线程来调用
new Thread(new Runnable() {
@Override
public void run() {
getWeb();
}
}).start();
我们这里访问了百度网址,可以看到,我们打印了一大串东西,这就是访问的百度数据
HttpUrlConnection加载网络图片实例
这里我们就基于上面的代码来访问网络上的图片,并将图片显示出来
try {
URL url=new URL("http://img4.duitang.com/uploads/item/201209/14/20120914194440_vJwWL.thumb.700_0.jpeg");
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
InputStream inputDtream=connection.getInputStream();
Bitmap bitmap= BitmapFactory.decodeStream(inputDtream);
Message message=handler.obtainMessage();
message.obj=bitmap;
handler.sendMessage(message);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在布局中添加一个ImageView标签
`
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img_main"/>
url中写的是我从网络复制的一张图片地址,让我们来看看效果
`
这里要注意,同样是放在子线程中调用
String/StringBuffer/StringBuilder的区别
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)