网络基础之HTTP

HTTP协议:
  1. 应用层协议
  2. 默认端口号:80
  3. 请求-应答模式
  4. 特点:简单快速,灵活,灵活,无连接,一次请求只能获取一个资源,无状态,HTTP没有记忆功能,明文传输,HTTPS对网络传输数据进行加密
  5. GET:请求获取Request-URT所标识的资源
  6. Post:在REquest-URI所标识的资源后附加新的数据,向服务器传送资源
HTTP-请求
  1. 组成
    1. head(必须)【必须的信息储存位置】
    2. body(get请求无)
    3. Request Method :请求方法
    4. staus code :请求状态
    5. Remote Address:远程地址
    6. accept:接受文件类型
    7. connection:保持连接,暂时不进行四次挥手
    8. Cache-control:缓存

HTTP-响应
  1. head
  2. body
HTTP-Cookie和Session
  1. Cookie保存在客服端
  2. Session保存在服务器中
  3. Session文件创建时间是第一个登录服务器
  4. Cookie是字符串,用于服务器的身份代码
HTTP协议
  1. 请求和响应成对出现
  2. HTTP请求是给服务器的
    1. 第一行:请求行:请求方式 资源地址 协议版本
    2. 第二行~:请求头,请求头的键值对格式,格式:key value
      1. If-modified-since ,上次修改时间
    3. 空行之后,请求体,post提交方式的参数
  3. HTTP响应
    1. 第一行:响应行:协议版本 响应状态码 状态描述信息
      1. 常见状态码:200 :一切正常 302 :重定向 304:拿本地缓存 404:未寻找到资源 500服务器端错误
      2. 响应头
        1. 关注:last-modified:访问资源最后修改时间
      3. 响应体:页面显示的正文
HTTP1.1和1.0的差别:1.0获取资源后断开,1.1获取资源后不断开

模拟客服端发送get请求:

package cn.woniu.http;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
 * 模拟发送get请求
 * 1、获取URL
 * 2、获取对应URL的连接对应的方法
 * 3、设置相应的方法及对应的参数,
 * 4、建立连接
 * 5、获取连接服务器响应数据
 * 6、读取相应数据并方法相应的文件
 * 7、异常处理
 * 8、关闭资源
 * @author Administrator
 *
 */
public class Get {
	public static void main(String[] args) {
		/*准备模拟get请求的服务器的地址*/
		String urlStr = "http://192.168.10.108/Agileone_1.2/";
		BufferedInputStream input = null;
		BufferedOutputStream output = null;
		HttpURLConnection con = null;
		try {
			URL url = new URL(urlStr);
			// 获取一个HTTP连接对象
			URLConnection urlcon = url.openConnection();
			con = (HttpURLConnection) urlcon;
			/* 设置请求参数及 */
			con.setRequestMethod("get");
			// con.setRequestProperty("Accept", "");
			// 建立连接
			con.connect();
			/* 获取服务器响应数据 */
			input = new BufferedInputStream(con.getInputStream());
			/* 设置输出流,将读取输入放入文件 */
			output = new BufferedOutputStream(new FileOutputStream(
					new File("C:\\Users\\Administrator\\Desktop\\11.txt"), true));
			// 读取数据
			byte[] b = new byte[1024];
			int len = 0;
			/* 每次读取文件确保文件读取完 */
			while ((len = input.read(b)) != -1) {
				output.write(b);
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			/* 关闭资源 */
			try {
				output.flush();
				output.close();
				con.disconnect();
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

模拟发送post请求:

package cn.woniu.http;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
 * 模拟发送post请求
 * @author Administrator
 *
 */
public class Post {
	public static void main(String[] args) {
		String urlString = "http://192.168.10.108/Agileone_1.2/index.php/common/login";
		HttpURLConnection con = null;
		OutputStream os = null;
		InputStream is = null;
		try {

			URL url = new URL(urlString);
			/* 获取http连接 */
			con = (HttpURLConnection) url.openConnection();
			/*设置请求的方法,默认get方法及参数*/
			con.setRequestMethod("POST");
			/*设置Cookie值*/
			con.setRequestProperty("Cookie",
					"PHPSESSID=53342f3ff0fd279d897278aa907114ff");
			/*开启output流,默认关闭*/
			con.setDoOutput(true);
			/*与服务器建立连接*/
			con.connect();
			/*获取输出流,想服务器输出内容*/
			os = con.getOutputStream();
			/*post方法的方法体内容,键值对形式传输内容*/
			String requestContent = "username=admin&password=admin&savelogin=true";
			/*发送内容*/
			os.write(requestContent.getBytes());
			is = con.getInputStream();
			/*读取服务器响应内容*/
			byte[] bs = new byte[1024];
			int len = 0;
			while ((len = is.read(bs)) != -1) {
				/*打印输入内容*/
				System.out.println(new String(bs, 0, len, "utf-8"));
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				is.close();
				os.close();
				con.connect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}


猜你喜欢

转载自blog.csdn.net/coco_love24/article/details/80950394