GET和POST方式有什么区别
Get, 它用于获取信息,注意,他只是获取、查询数据,也就是说它不会修改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。
Post,它是可以向服务器发送修改请求,从而修改服务器的,比方说,我们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是可以仅仅获取数据的。
HttpUrlConnection请求网络数据实例
1:创建URL的对象:
URL url=new URL("");
引号里添加网址
2:通过URL对象调用openConnection()方法获得HttpURLConnection对象:
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
3:HttpURLConnection对象设置其他连接属性,HttpURLConnection对象调用getInputStream()方法向服务器
发送http请求并获取到服务器返回的输入流:
InputStreamReader reader=new InputStreamReader(inputStream);
BufferedReader bufferedReader=new BufferedReader(reader);
4:读取输入流,转换成String字符串:
String temp="";
StringBuffer stringBuffer=new StringBuffer();
while((temp=bufferedReader.readLine())!=null){
stringBuffer.append(temp);
}
Log.e("********",stringBuffer.toString());
完整代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
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 button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
button = findViewById(R.id.main4_bt);
button.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.lenovo.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("********",stringBuffer.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在Android中访问网络必须添加网络权限,加在启动项中。
<uses-permission android:name="android.permission.INTERNET"/>
HttpConnection加载网络图片实例
这个跟上面网络数据差不多
加bitmap
Bitmap bitmap=BitmapFactory.decodeStream(inputStream);
String/StringBuffer/StringBuilder什么区别
String:字符串常量
StringBuffer:字符串变量(线程安全)
StringBuilder:字符串变量(非线程安全)
三者在执行速度方面:StringBuilder>StringBuffer>String
如果要操作少量的数据用 = String
单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
多线程操作字符串缓冲区 下操作大量数据 = StringBuffer