Day41 HTTP编程

Day41 HTTP编程

文章目录

HTTP

概念

HTTP编程指的是使用HTTP协议进行网络编程的过程。HTTP是一种用于传输超文本的应用层协议,通常用于在客户端和服务器之间传输信息。在HTTP编程中,开发人员可以使用各种编程语言和框架来创建和处理HTTP请求和响应,实现与Web服务器的交互。

应用场景

通过HTTP编程,开发人员可以实现与Web服务器的数据交换、资源获取、信息提交等功能,从而实现各种网络应用程序的开发。常见的HTTP编程工具包括cURL、Requests(Python)、HttpClient(Java)、HttpWebRequest(.NET)等。

主要方面

  1. 发起HTTP请求:通过编程方式创建HTTP请求,包括指定请求方法(如GET、POST)、请求头部信息、请求体内容等。
  2. 处理HTTP响应:解析从服务器返回的HTTP响应,包括状态码、响应头部信息、响应体内容等。
  3. 处理会话管理:在需要时管理HTTP会话,包括保持会话状态、处理cookie等。
  4. 处理异常和错误:处理网络请求过程中可能出现的异常情况,如超时、连接失败等。
  5. 安全性处理:确保HTTP通信的安全性,如使用HTTPS协议进行加密通信。

HTTP案例

案例一:获取淘宝商品周边类别

java 复制代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Test01 {


	 //需求:获取淘宝商品周边类别
	 
	public static void main(String[] args) throws IOException {
		
		String path = "https://suggest.taobao.com/sug?code=utf-8&q=%E8%80%90%E5%85%8B&callback=cb";
		
		//创建链接对象
		URL url = new URL(path);
		//获取连接对象
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		
		//设置参数
		connection.setConnectTimeout(5000);//设置连接超时时间
		connection.setReadTimeout(5000);//设置读取数据超时时间
		connection.setDoInput(true);//设置是否允许使用输入流
		connection.setDoOutput(true);//设置是否允许使用输出流
		
		//获取响应状态码
		int code = connection.getResponseCode();
		if(code == HttpURLConnection.HTTP_OK){
			
			BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
			char[] cs = new char[1024];
			int len;
			while((len = br.read(cs)) != -1){
				System.out.println(new String(cs, 0, len));
			}
			
			
		}else if(code == HttpURLConnection.HTTP_NOT_FOUND){
			System.out.println("页面未找到");
		}
			
	}
}

案例二:下载图片

java 复制代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Test02 {

	 // 需求:下载图片
	 
	public static void main(String[] args) throws IOException {
		
		String path = "https://wx2.sinaimg.cn/mw690/e2438f6cly1hoo3qpm7vrj21111jk4mn.jpg";
		
		//创建链接对象
		URL url = new URL(path);
		//获取连接对象
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		
		//设置参数
		connection.setConnectTimeout(5000);//设置连接超时时间
		connection.setReadTimeout(5000);//设置读取数据超时时间
		connection.setDoInput(true);//设置是否允许使用输入流
		connection.setDoOutput(true);//设置是否允许使用输出流
		
		//获取响应状态码
		int code = connection.getResponseCode();
		if(code == HttpURLConnection.HTTP_OK){
			
			BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("金智媛.jpg"));
			byte[] bs = new byte[1024];
			int len;
			while((len = bis.read(bs)) != -1){
				bos.write(bs, 0, len);
			}
			
			bis.close();
			bos.close();
			
		}else if(code == HttpURLConnection.HTTP_NOT_FOUND){
			System.out.println("页面未找到");
		}
			
	}
}
相关推荐
九河云17 分钟前
在云计算环境中实施有效的数据安全策略
大数据·网络·数据库·云计算
哈基米喜欢哈哈哈30 分钟前
低版本的JVM遇到高版本的class字节码是否会报错
java·jvm
2351633 分钟前
【并发编程】详解volatile
java·开发语言·jvm·分布式·后端·并发编程·原理
半路_出家ren41 分钟前
Shell脚本基础应用
linux·网络·shell
知白守黑2671 小时前
keepalived
网络
洛小豆1 小时前
java 中 char 类型变量能不能储存一个中文的汉字,为什么?
java·后端·面试
云飞云共享云桌面1 小时前
SolidWorks服务器多人使用方案
大数据·运维·服务器·前端·网络·电脑·制造
你疯了抱抱我1 小时前
【H3C NX30Pro】光猫桥接并使用OpenWRT配置NAS端口映射;配置IPv6、IPv4公网直连内网服务器;
运维·服务器·网络·智能路由器·路由器
爱吃烤鸡翅的酸菜鱼1 小时前
从数据库直连到缓存预热:城市列表查询的性能优化全流程
java·数据库·后端·spring·个人开发