1.GET和POST的区别
Post请求可以向服务器传送数据,数据对用户不可见。而get是把参数数据队列加到提交的URL中,例如(http://www.baidu.com/s?w=%C4&inputT=2710)
get 传送的数据量较小。post传送的数据量较大。
get安全性非常低,post安全性较高。
2.HttpURLConnection请求网络数据实例
首先获取网络访问权限,在AndroidMainfest文件夹下在mainfast属性下添加一段代码:
<uses-permission android:name="android.permission.INTERNET"/>
在主函数中实现
package com.example.demo5;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Main4Activity extends AppCompatActivity {
private Button main4_btn;
private ImageView imageView;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bitmap bi= (Bitmap) msg.obj;
imageView.setImageBitmap(bi);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
main4_btn=findViewById(R.id.main4_btn);
imageView=findViewById(R.id.main_iv);
main4_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
getWebInfo();
}
}).start();
}
});
}
private void getWebInfo() {
try {
URL url=new URL("https://www.baidu.com.cn");
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
InputStream inputStream=connection.getInputStream();
InputStreamReader reader=new InputStreamReader(inputStream);
BufferedReader bufferedReader=new BufferedReader(reader);
String temp="";
StringBuffer stringBuffer=new StringBuffer();
while ((temp=bufferedReader.readLine())!=null){
stringBuffer.append(temp);
}
Log.e("WEB", "getWebInfo:*****************************"+stringBuffer.toString() );
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".Main4Activity">
<Button
android:id="@+id/main4_btn"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="点击上网"/>
<ImageView
android:id="@+id/main_iv"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
2.HttpURLConnection加载网络图片实例
图片url地址只需要在网络里随便找一张图片,右击它选择获取图片地址。
package com.example.demo5;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Main4Activity extends AppCompatActivity {
private Button main4_btn;
private ImageView imageView;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bitmap bi= (Bitmap) msg.obj;
imageView.setImageBitmap(bi);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
main4_btn=findViewById(R.id.main4_btn);
imageView=findViewById(R.id.main_iv);
main4_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
getWebInfoImg();
}
}).start();
}
});
}
private void getWebInfoImg() {
try {
URL url=new URL("https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1528451090&di=5c8702bf9473c14aa7bf6e130d625dc5&src=http://img4.duitang.com/uploads/item/201407/12/20140712214636_QeyrJ.jpeg");
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
InputStream inputStream=connection.getInputStream();
Bitmap bitmap=BitmapFactory.decodeStream(inputStream);
Message message=handler.obtainMessage();
message.obj=bitmap;
handler.sendMessage(message);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
layout文件和2相同
4.String/StringBuffer/StringBuilder有什么区别
String 字符串常量
String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象
StringBuffer 字符串变量(线程安全)
每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用
StringBuilder 字符串变量(非线程安全)
一个类似于 String 的字符串缓冲区,但不能修改,可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。