- Get和Post方式有什么区别
- HttpUrlConnection请求网络数据实例
- HttpUrlConnection加载网络图片实例
- String/StringBuffer/StringBuilder什么区别
一、HTTP协议
“超文本传输协议”,是互联网上应用最为广泛的一种网络协议,用于实现互联网中www服务。
二、HTTP请求
1.HTTP请求是客户端和服务器端之间,发送请求和返回应答的标准(TCP)
2.客户端发出一个HTTP请求后,就与服务器建立起了TCP连接,服务端接收到请求后进行处理后返回客户端响应数据。
三、使用HTTPURLConnection发送GET请求的步骤
1.创建URL对象
2.通过URL对象调用openConnection()方法获得HTTPURLConnection对象。
3.HTTPURLConnection对象设置其他连接属性
4.HTTPURLConnection对象调用getInputStream()方法向服务器发送HTTP请求并获取到服务器返回的输入流
5.读取输入流,转换成String字符流
四、Get和Post方式有什么区别
1.get方式属于明文传参,在地址栏中可以看到参数,调用简单不安全
2.post属于不可见传参,调用安全。
HttpUrlConnection请求网络数据实例
package com.example.myapplication;
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 WebActivity extends AppCompatActivity {
private Button web_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
web_btn =findViewById(R.id.web_btn);
web_btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View view){
new Thread(new Runnable() {
@Override
public void run() {
//getWebInfo();
}
}).start();
}
});
}
public void getWebInfo() {
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 bufferedReader = new BufferedReader(reader);
//开始读取
String temp = "";
StringBuffer stringBuffer = new StringBuffer();
while ((temp = bufferedReader.readLine()) != null) {
stringBuffer.append(temp);
}
Log.e("WEB", stringBuffer.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
HttpUrlConnection加载网络图片实例
package com.example.myapplication;
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 WebActivity extends AppCompatActivity {
private Button pic_btn;
private ImageView pic;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bitmap bitmap = (Bitmap) msg.obj;
pic.setImageBitmap(bitmap);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
pic_btn = findViewById(R.id.pic_btn);
pic = findViewById(R.id.pic);
pic_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
getPic();
}
}).start();
}
});
}
public void getPic(){
try {
URL url = new URL("http://img2.imgtn.bdimg.com/it/u=2843597872,3901877888&fm=27&gp=0.jpg");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(inputStream);
Message msg = handler.obtainMessage();
msg.obj = bm;
handler.sendMessage(msg);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String/StringBuffer/StringBuilder什么区别
String:String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。
StringBuffer对象的每次修改都会改变对象自身,StringBuffer是线程安全的
StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用,一般在单线程中使用