GET请求与POST方法的区别
- Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。这四种方法分别对应查,改,增,删4个操作,它们都是向服务器发送请求。GET方法一般用于获取或者查询数据,而POST 一般用于更新数据,但是在实际操作中,一般使用GET/POST方法就能完成查,改,增,删这4个操作
- GET请求的数据会附在URL之后,以?分割URL和传输数据,而POST提交的数据则是放置在HTTP包的包体中
- GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据。实际上HTTP协议规范没有对URL长度进行限制,只是因为GET是通过URL提交数据的,而有些浏览器对于URL长度有所限制
- POST的安全性要比GET的安全性高。例如通过GET提交数据,用户名和密码将明文出现在URL上
GET与POST只是发送机制不同,并不是一个取一个发
HttpUrlConnection请求网络数据实例
private void getWebHttp() {
try {
URL url = new URL("https://www.baidu.com/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String http = "";
StringBuffer stringBuffer = new StringBuffer();
while ((http = bufferedReader.readLine()) != null) {
stringBuffer.append(http);
Log.e("web", stringBuffer.toString());
}
inputStream.close();
connection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
- 调用这个方法
HttpUrlConnection加载网络图片实例
private void getWebImg() {
try {
URL url = new URL("http://img851.ph.126.net/SkAY17A9MNUapBWEP8uDWg==/2715107625351961908.png");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Message message = handler.obtainMessage();
message.obj = bitmap;
handler.sendMessage(message);
inputStream.close();
connection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
iv.setImageBitmap((Bitmap) msg.obj);
}
};
String/StringBuffer/StringBuilder的区别
- String是字符串常量,与StringBuffer不同的是,String是不可变的对象,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。而 StringBuffer 类则不同,每次结果都会对StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用
- java.lang.StringBuilder是一个可变的字符序列,是JDK5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候,而StringBuffer则用于多线程操作大量数据。大部分情况下,StringBuilder > StringBuffer,这主要是由于前者不需要考虑线程安全
也就是说,如果要操作少量的数据,用String ;如果是单线程操作大量数据,用StringBuilder ;而多线程操作大量数据,则用StringBuffer