http,超文本传输协议
基于这个协议,不仅可以传送文本,还可以传送音频,视频
无状态协议
一次http协议交互的流程,客户端向服务器端发起请求,服务器端生成相应的响应,在交给客户端,
是应用层通信协议
客户端向服务器端建立连接,发送请求,服务器端响应,这次连接断开
服务器返回给我们的数据有很多中,有html,json,xml等等
http运行流程
服务器上面运行一个web服务器软件,软件解析html,jsp,asp发送给客户端
1,请求报文格式
请求行-通用信息头--请求头--请求头--报文主题
2,响应报文格式
状态行-通用信息头--请求头--响应头--报文主题
package com.example.http01;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private View requestButton;
private HttpResponse httpResponse;
private HttpEntity httpEnity;
private InputStream inputStream;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestButton = findViewById(R.id.requestButton);
requestButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(){
public void run() {
//生成一个请求对象
HttpGet httpGet=new HttpGet("http://baidu.com");
//生成一个Http客户端对象
HttpClient httpClient=new DefaultHttpClient();
//使用Http客户端发送请求对象
try {
//httpResponse服务器端发回给我们的响应
httpResponse = httpClient.execute(httpGet);
//服务器端发回给我们的数据就包含在Entity里面
httpEnity = httpResponse.getEntity();
//响应内容
inputStream = httpEnity.getContent();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
String result="";
String line="";
while((line=reader.readLine())!=null){
result=result+line;
}
System.out.println(result);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(inputStream!=null)
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};
}.start();
}
});
}
}