Java 解析 cURL(bash) 命令
解析 cURL(bash) 命令
- 1. 主要用于解析从浏览器复制来的 cURL(bash)
- 2. 废话不多说,都在🍻代码里了。
- 参考资料
1. 主要用于解析从浏览器复制来的 cURL(bash)

curl 'https://eva2.csdn.net/v3/06981375190026432f77c01bfca33e32/lts/groups/dadde766-b087-42da-8e67-d2499a520ee7/streams/a0119567-bf91-4314-ab75-f683ba6c0c0a/logs' \-H 'authority: eva2.csdn.net' \-H 'accept: */*' \-H 'accept-language: zh-CN,zh;q=0.9' \-H 'cache-control: no-cache' \-H 'content-type: application/json' \-H 'lts-sdk-request-id: 6c6b1e6bc1b5482fad39fd89e1be7e04' \-H 'lts-sdk-version: 1.0.15' \-H 'origin: https://so.csdn.net' \-H 'pragma: no-cache' \-H 'referer: https://so.csdn.net/so/search?q=java&t=blog&u=jx520' \-H 'sec-ch-ua: "Not-A.Brand";v="24", "Chromium";v="14"' \-H 'sec-ch-ua-mobile: ?0' \-H 'sec-ch-ua-platform: "Windows"' \-H 'sec-fetch-dest: empty' \-H 'sec-fetch-mode: cors' \-H 'sec-fetch-site: same-site' \-H 'user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36' \-H 'x-sdk-date: 20231014T001112Z' \--data-raw '{"labels":{},"logs":[{"contents":[{"pid":"so","ref":"https://blog.csdn.net/jx520/?type=blog","curl":"https://so.csdn.net/so/search?q=java&t=blog&u=jx520","spm":"1018.2226","disabled":"true","extra":"{\"x\":763,\"y\":72,\"ev\":\"move\"}","tos":3,"adb":0,"cCookie":"c_ins_um=-;c_ins_fref=-;c_ins_fpage=/;c_ins_prid=1695268703975_658854;c_ins_rid=1695735575959_588639;c_dl_prid=1696211031774_715058;c_dl_rid=1696416086259_366423;c_dl_fref=https://blog.csdn.net/m0_46365130/article/details/122106794;c_dl_fpage=/download/z18813048784/10697308;c_dl_um=-;c_utm_source=wwwtab;c_session_id=10_1697241559533.454757;c_segment=5;c_sid=1c05424b88433722b9b201b4d2024577;c_first_ref=default;c_utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-114031899-blog-109717731.235%5Ev38%5Epc_relevant_default_base;c_utm_relevant_index=2;c_pref=default;c_first_page=https%3A//blog.csdn.net/jx520/;c_dsid=11_1697242179555.095819;c_page_id=default;c_ref=https%3A//blog.csdn.net/jx520/%3Ftype%3Dblog;","t":1697242273,"screen":"1920*1080","urn":"1697242263003-f4828940-1336-41c0-8a4d-ba464f4a65e1","vType":"U010000","log_id":"56","sign":"7b1e61a11f5c4647a7f7fad1c85bdc70","userAgent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36","cid":"10_18489767550-1694529713132-118469","uid":"jx520","sid":"10_1697241559533.454757","dc_sid":"1c05424b88433722b9b201b4d2024577","did":"10_18489767550-1694529713132-118469","utm":"","un":"jx520","__client_time__":1697242272521}]}]}' \--compressed
2. 废话不多说,都在🍻代码里了。
package com.jerry.utils;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;import static java.util.stream.Collectors.groupingBy;/*** 解析 cURL(bash) 命令*/
@Slf4j
public class CUrlUtil {/*** 解析 curl 命令** @param curlCmd curl 命令* @return*/public static CurlEntity parserCurl(String curlCmd) {String[] cmdParams; // curl 命令按行切成的数组String url; // 请求地址Map<String, String> headers; // 请求头 mapString body; // 请求体// 把 curl 命令按行切成数组cmdParams = curlCmd.split("\n");// 取请求地址url = StrUtil.trimByChar(cmdParams[0], "'");// log.info("url = {}", url);// 将请求头、请求体分开Map<String, List<String>> headerAndBody = Stream.of(cmdParams).collect(groupingBy((String str) -> str.trim().startsWith("-H") ? "header" : "body"));// 提取请求头 mapheaders = headerAndBody.get("header").stream().map(str -> StrUtil.trimByChar(str, "'").split(": ")).collect(Collectors.toMap(strArr -> strArr[0], strArr -> strArr[1]));// headers.put("Content-Encoding","gzip"); // compress gzip 补上压缩参数。让服务器如果支持就返回压缩结果// log.info("headers = {}", headers);// 提取请求体body = headerAndBody.get("body").stream().filter(str -> str.trim().startsWith("--data-raw")).map(str -> StrUtil.trimByChar(str, "'", "' \\")).collect(Collectors.joining());// log.info("body = {}", body);// 返回一个 curl 实体对象。包含:请求地址、请求头、请求体return new CurlEntity(url, headers, body);}@Data@AllArgsConstructorpublic static class CurlEntity {String url; // 请求地址Map<String, String> headers; // 请求头 mapString body; // 请求体}
}
参考资料
curl 命令在线执行
在线:curl 命令转成其他语言
相关文章:
Java 解析 cURL(bash) 命令
解析 cURL(bash) 命令 1. 主要用于解析从浏览器复制来的 cURL(bash)2. 废话不多说,都在🍻代码里了。参考资料 1. 主要用于解析从浏览器复制来的 cURL(bash) curl https://eva2.csdn.net/v3/06981375190026432f77c01bfca33e32/lts/…...
JDK21的虚拟线程是什么?和平台线程什么关系?
虚拟线程(Virtual Thread)是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。 在引入虚拟线程…...
Unity DOTS Component概述
最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握Unity DOTS开发。 Unity DOTS 中Entity作为实体不直接去存放数据,而是将数据以一个个的组件为载体来存放起来。每个Entity会得到一些不同的ComponentData的组…...
element ui 下拉框 选择月份和天数
一、背景 目前做的管理系统项目,期望实现功能为:设置出账周期和出账日,考虑使用element ui下拉框实现功能 二、所用技术 vue2element ui 三、实现效果 四、具体代码 <template><popup-frame :title"批量设置出账日" …...
用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo
java的com.sun.net.httpserver包下的类提供了一个高层级的http服务器API,可以用来构建内嵌的http服务器。支持http和https。这些API提供了一个RFC 2616 (HTTP 1.1)和RFC 2818 (HTTP over TLS)的部分实现。 https://docs.oracle.com/en/java/javase/19/docs/api/jdk.…...
unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接
一 简介 这是个在项目中使用了很久的浏览器插件。 很负责任的说这是在pc平台上最好用的浏览器插件 商业付费价格78刀,相比3d webview等插件动不动就178、368的价格就显得很良心 最新版下载链接(请勿商用) 1.1 功能概述 基本和普通浏览器无…...
LeetCode算法位运算—只出现一次的数字
目录 136. 只出现一次的数字 - 力扣(LeetCode) 解题思路: 代码: 运行结果: 补充 异或的重要性质 136. 只出现一次的数字 - 力扣(LeetCode) 给你一个 非空 整数数组 nums ,除了某…...
vcpkg manifest 的使用
最近项目上要使用 CMakeLists 管理,由于 Windows 版本有依赖到 vcpkg 提供的库,所以需要使用 vcpkg manifest 来统一设置库的版本,方便后续维护 推荐一个文章,介绍的可以说是非常全面了 VCPKG 特性 - Versioning 不过里面也有一些…...
选择什么电容笔比较好?平板手写笔推荐
由于苹果Pencil的热销,让华国内市场上,也出现了不少的平替式电容笔,这些产品,有好有坏,价格也很公道。不过,也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友,在前几年就开始用上…...
pdf转二维码怎么做?pdf二维码制作简单技巧
pdf是一种很常见的文件储存格式,一般通知、发票、简历都会保存为这种格式来使用,那么需要将pdf格式文件做成二维码,该用什么方式来制作呢?下面给大家分享一个pdf转二维码的在线工具,可以通过上传文件一键生成二维码&am…...
【CANoe】TX Self-ACK自应答配置与CPAL实现
一、引言 在测试CAN&CANFD通信或者网络管理的时候,我们经常遇到使用报文(网络管理报文或者通信报文)唤醒被测件这个测试点,如果测试比较多的情况下,我们就会发现,如果CANoe没有接被测件或者被测件没有…...
(Python)MATLAB mat矩阵和Python npy矩阵转换
Python np.ndarray矩阵转换为MATLAB mat文件 import numpy as npimport scipy.io as iomat_path mat_save_pathmat np.zeros([6, 128])io.savemat(mat_path, {name: mat})Python读取MATLAB mat文件 import numpy as np from scipy import iomat io.loadmat(your_mat_file.…...
Flink1.14 SourceReader概念入门讲解与源码解析 (三)
目录 SourceReader 概念 SourceReader 源码方法 void start(); InputStatus pollNext(ReaderOutput output) throws Exception; List snapshotState(long checkpointId); CompletableFuture isAvailable(); void addSplits(List splits); 参考 SourceReader 概念 Sour…...
PS运行中缺失d3dcompiler_47.dll问题的5个有效修复方法总结
在使用ps作图的时候,我们有时会遇到一些问题,其中之一就是“PS运行中缺失d3dcompiler_47.dll”的问题。这个问题可能会导致PS无法正常运行,“d3dcompiler_47.dll”。这是一个动态链接库文件,它是DirectX的一部分,主要负…...
【MATLAB-Retinex图像增强算法的去雾技术】
续:【MATLAB-基于直方图优化的图像去雾技术】 【MATLAB-Retinex图像增强算法的去雾技术】 1 原图2 MATLAB实现代码3 结果图示 参考书籍:计算机视觉与深度学习实战:以MATLAB、Python为工具, 主编:刘衍琦, 詹福宇, 王德建…...
使用 2 个 HSplitView 在 swiftUI 中创建一个 3 窗格界面
Pet*_*ter 8 嗯,我会的。在断断续续地挣扎了几个星期之后,在我问这个问题一个小时后,我似乎解决了它!只需将第二个 HSplitView 的 layoutPriority 设置为 1,并将中心视图也设置为 1。当你想到它时是有道理的࿱…...
【C++ 操作符重载:定制自己的运算符行为】
在C编程中,操作符重载是一项强大的特性,它允许程序员定制内置运算符的行为,使它们适用于用户自定义的数据类型。这篇博客将介绍什么是操作符重载,如何使用它,以及一些最佳实践。 什么是操作符重载? 操作符…...
Android Fragment 基本概念和基本使用
Android Fragment 基本概念和基本使用 一、基本概念 Fragment,简称碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。 过去s…...
xml schema中的all元素
说明 xml schema中的all元素表示其中的子元素可以按照任何顺序出现,每个元素可以出现0次或者1次。 https://www.w3.org/TR/xmlschema-1/#element-all maxOccurs的默认值是1,minOccurs 的默认值是1。 举例 <element name"TradePriceRequest&…...
Java8实战-总结42
Java8实战-总结42 用Optional取代null应用 Optional 的几种模式默认行为及解引用 Optional 对象两个 Optional 对象的组合使用 filter 剔除特定的值 用Optional取代null 应用 Optional 的几种模式 默认行为及解引用 Optional 对象 采用orElse方法读取这个变量的值࿰…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
