一、什么是HTTP请求?
HTTP请求是客户端与服务端之间,发送请求和返回应答的标准(TCP)。
客户端发出一个HTTP请求后,就与服务器建立起了TCP的连接,
服务端接收到请求并进行处理后返回给客户端响应数据。
Android上发送HTTP请求的方式:
HttpURLConnection和HttpClient.常用的是HttpURLConnection。
二、什么是HttpURLConnection?
HttpURLConnection是Java的标准指定网站发送get请求、post请求类,
HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、
POST请求,HttpURLConnection在使用上相对简单,并且易于扩展,推荐使用。
三、如何使用HttpURLConnection?
HttpURLConnection的常用方法:
openConnection():获得HttpURLConnection对象;
setConnectTimeout(int timeout):设置一个指定的链接超时时间(以毫秒为单位);
setRequestMethod(String method):设置请求方式;
getOutputStream():服务器建立连接,得到输出流对象;
getInputStream():发送报文,得到服务器返回的输入流;
getResponseCode():从HTTP响应消息获取状态码;
使用HttpURLConnection请求方式有两种:post方式、get方式。
使用HttpURLConnection发送GET请求的步骤:
1.创建URL对象
2.通过URL对象调用openConnection()方法获得HttpURLConnection对象;
3.HttpURLConnection对象设置其他连接属性;
4.HttpURLConnection对象调用getInputStream()方法向服务器发送http请求
并获取到服务器返回的输入流;
5.读取输入流,转换成String字符串;
四、使用HttpURLConnection获取HTTP请求(以访问csdn网站为例):
步骤如第三条;代码如下:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 NetActivity2 extends AppCompatActivity {
private Button Btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_net2);
Btn = findViewById(R.id.Tz_Btn);
Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
getWebInfo();
}
}).start();
}
});
}
private void getWebInfo() {
try {
//创建URL对象
URL url = new URL("http://www.youkuaiyun.com/");
//通过URL对象调用openConnection()方法获得HttpURLConnection对象;
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
//获取输入流
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
//读取输入流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuffer buffer = new StringBuffer();
String temp = null;
while ((temp = bufferedReader.readLine()) != null) {
buffer.append(temp);
}
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
Log.e("Mian", buffer.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
log.e打印输出:
03-12 19:58:55.543 12394-12613/com.test.project.netconnection E/Mian: <html><head><title>302 Found</title></head><body bgcolor="white"><center><h1>302 Found</h1></center><hr><center>nginx</center></body></html>