Day41 HTTP编程
文章目录
- Day41 HTTP编程
- HTTP
- 概念
- 应用场景
- 主要方面
- HTTP案例
- 案例一:获取淘宝商品周边类别
- 案例二:下载图片
HTTP
概念
HTTP编程指的是使用HTTP协议进行网络编程的过程。HTTP是一种用于传输超文本的应用层协议,通常用于在客户端和服务器之间传输信息。在HTTP编程中,开发人员可以使用各种编程语言和框架来创建和处理HTTP请求和响应,实现与Web服务器的交互。
应用场景
通过HTTP编程,开发人员可以实现与Web服务器的数据交换、资源获取、信息提交等功能,从而实现各种网络应用程序的开发。常见的HTTP编程工具包括cURL、Requests(Python)、HttpClient(Java)、HttpWebRequest(.NET)等。
主要方面
- 发起HTTP请求:通过编程方式创建HTTP请求,包括指定请求方法(如GET、POST)、请求头部信息、请求体内容等。
- 处理HTTP响应:解析从服务器返回的HTTP响应,包括状态码、响应头部信息、响应体内容等。
- 处理会话管理:在需要时管理HTTP会话,包括保持会话状态、处理cookie等。
- 处理异常和错误:处理网络请求过程中可能出现的异常情况,如超时、连接失败等。
- 安全性处理:确保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("页面未找到");}}
}