当前位置: 首页 > news >正文

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&#xff08;bash&#xff09; 命令 1. 主要用于解析从浏览器复制来的 cURL(bash)2. 废话不多说&#xff0c;都在&#x1f37b;代码里了。参考资料 1. 主要用于解析从浏览器复制来的 cURL(bash) curl https://eva2.csdn.net/v3/06981375190026432f77c01bfca33e32/lts/…...

JDK21的虚拟线程是什么?和平台线程什么关系?

虚拟线程&#xff08;Virtual Thread&#xff09;是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process&#xff0c;LWP&#xff09;&#xff0c;由 JVM 调度。许多虚拟线程共享同一个操作系统线程&#xff0c;虚拟线程的数量可以远大于操作系统线程的数量。 在引入虚拟线程…...

Unity DOTS Component概述

最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面地几个关键概念&#xff0c;方便大家上手学习掌握Unity DOTS开发。 Unity DOTS 中Entity作为实体不直接去存放数据&#xff0c;而是将数据以一个个的组件为载体来存放起来。每个Entity会得到一些不同的ComponentData的组…...

element ui 下拉框 选择月份和天数

一、背景 目前做的管理系统项目&#xff0c;期望实现功能为&#xff1a;设置出账周期和出账日&#xff0c;考虑使用element ui下拉框实现功能 二、所用技术 vue2element ui 三、实现效果 四、具体代码 <template><popup-frame :title"批量设置出账日" …...

用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo

java的com.sun.net.httpserver包下的类提供了一个高层级的http服务器API&#xff0c;可以用来构建内嵌的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刀&#xff0c;相比3d webview等插件动不动就178、368的价格就显得很良心 最新版下载链接&#xff08;请勿商用&#xff09; 1.1 功能概述 基本和普通浏览器无…...

LeetCode算法位运算—只出现一次的数字

目录 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 代码&#xff1a; 运行结果&#xff1a; 补充 异或的重要性质 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 给你一个 非空 整数数组 nums &#xff0c;除了某…...

vcpkg manifest 的使用

最近项目上要使用 CMakeLists 管理&#xff0c;由于 Windows 版本有依赖到 vcpkg 提供的库&#xff0c;所以需要使用 vcpkg manifest 来统一设置库的版本&#xff0c;方便后续维护 推荐一个文章&#xff0c;介绍的可以说是非常全面了 VCPKG 特性 - Versioning 不过里面也有一些…...

选择什么电容笔比较好?平板手写笔推荐

由于苹果Pencil的热销&#xff0c;让华国内市场上&#xff0c;也出现了不少的平替式电容笔&#xff0c;这些产品&#xff0c;有好有坏&#xff0c;价格也很公道。不过&#xff0c;也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友&#xff0c;在前几年就开始用上…...

pdf转二维码怎么做?pdf二维码制作简单技巧

pdf是一种很常见的文件储存格式&#xff0c;一般通知、发票、简历都会保存为这种格式来使用&#xff0c;那么需要将pdf格式文件做成二维码&#xff0c;该用什么方式来制作呢&#xff1f;下面给大家分享一个pdf转二维码的在线工具&#xff0c;可以通过上传文件一键生成二维码&am…...

【CANoe】TX Self-ACK自应答配置与CPAL实现

一、引言 在测试CAN&CANFD通信或者网络管理的时候&#xff0c;我们经常遇到使用报文&#xff08;网络管理报文或者通信报文&#xff09;唤醒被测件这个测试点&#xff0c;如果测试比较多的情况下&#xff0c;我们就会发现&#xff0c;如果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作图的时候&#xff0c;我们有时会遇到一些问题&#xff0c;其中之一就是“PS运行中缺失d3dcompiler_47.dll”的问题。这个问题可能会导致PS无法正常运行&#xff0c;“d3dcompiler_47.dll”。这是一个动态链接库文件&#xff0c;它是DirectX的一部分&#xff0c;主要负…...

【MATLAB-Retinex图像增强算法的去雾技术】

续&#xff1a;【MATLAB-基于直方图优化的图像去雾技术】 【MATLAB-Retinex图像增强算法的去雾技术】 1 原图2 MATLAB实现代码3 结果图示 参考书籍&#xff1a;计算机视觉与深度学习实战:以MATLAB、Python为工具&#xff0c; 主编&#xff1a;刘衍琦, 詹福宇&#xff0c; 王德建…...

使用 2 个 HSplitView 在 swiftUI 中创建一个 3 窗格界面

Pet*_*ter 8 嗯&#xff0c;我会的。在断断续续地挣扎了几个星期之后&#xff0c;在我问这个问题一个小时后&#xff0c;我似乎解决了它&#xff01;只需将第二个 HSplitView 的 layoutPriority 设置为 1&#xff0c;并将中心视图也设置为 1。当你想到它时是有道理的&#xff1…...

【C++ 操作符重载:定制自己的运算符行为】

在C编程中&#xff0c;操作符重载是一项强大的特性&#xff0c;它允许程序员定制内置运算符的行为&#xff0c;使它们适用于用户自定义的数据类型。这篇博客将介绍什么是操作符重载&#xff0c;如何使用它&#xff0c;以及一些最佳实践。 什么是操作符重载&#xff1f; 操作符…...

Android Fragment 基本概念和基本使用

Android Fragment 基本概念和基本使用 一、基本概念 Fragment&#xff0c;简称碎片&#xff0c;是Android 3.0&#xff08;API 11&#xff09;提出的&#xff0c;为了兼容低版本&#xff0c;support-v4库中也开发了一套Fragment API&#xff0c;最低兼容Android 1.6。 过去s…...

xml schema中的all元素

说明 xml schema中的all元素表示其中的子元素可以按照任何顺序出现&#xff0c;每个元素可以出现0次或者1次。 https://www.w3.org/TR/xmlschema-1/#element-all maxOccurs的默认值是1&#xff0c;minOccurs 的默认值是1。 举例 <element name"TradePriceRequest&…...

Java8实战-总结42

Java8实战-总结42 用Optional取代null应用 Optional 的几种模式默认行为及解引用 Optional 对象两个 Optional 对象的组合使用 filter 剔除特定的值 用Optional取代null 应用 Optional 的几种模式 默认行为及解引用 Optional 对象 采用orElse方法读取这个变量的值&#xff0…...

【2026年华为暑期实习(AI)-5月20日-第三题- 敏感实体动态遮蔽掩码】(题目+思路+JavaC++Python解析+在线测试)

题目内容 为了防止大语言模型记忆并泄露输入上下文的敏感数据,安全框架会对输入的长文本进行预扫描,匹配预设的敏感词库(如 API_KEYAPI\_KEYAPI_KEY、身份证号码等)。...

Tycoon2FA 利用 OAuth 设备码钓鱼劫持 Microsoft 365 账户的机理与防御

摘要 以 Tycoon2FA 为代表的钓鱼即服务平台正采用基于 OAuth 2.0 设备码流程的新型钓鱼攻击&#xff0c;针对 Microsoft 365 账户实施高隐蔽性劫持。该攻击不窃取明文口令与传统双因素验证码&#xff0c;而是诱导用户在微软官方认证页面完成设备授权&#xff0c;使攻击者获取合…...

不止于测试:用GStreamer打造你的树莓派低成本视频监控/图传系统

树莓派视频监控实战&#xff1a;用GStreamer构建低成本图传系统 树莓派搭配普通USB摄像头能做什么&#xff1f;大多数人可能只想到简单的视频采集测试。但如果你掌握GStreamer这个多媒体框架的进阶用法&#xff0c;就能将它变成一套功能完整的视频监控或无线图传系统。本文将彻…...

避坑指南:展锐平台Camera驱动移植中那些容易出错的配置项(以OV08A10为例)

展锐平台Camera驱动移植实战&#xff1a;OV08A10关键配置避坑手册 当你在展锐平台上移植OV08A10摄像头驱动时&#xff0c;是否遇到过这样的场景&#xff1a;所有配置看似正确&#xff0c;但摄像头就是无法正常工作&#xff1f;预览黑屏、图像异常或设备根本无法识别传感器——这…...

Unity交通仿真入门:从零到一搭建十字路口红绿灯与车辆AI(附完整C#源码)

Unity交通仿真实战&#xff1a;十字路口红绿灯与车辆AI开发指南 在游戏开发和城市模拟领域&#xff0c;交通仿真一直是个充满挑战又极具实用价值的课题。想象一下&#xff0c;你正站在一个繁忙的十字路口&#xff0c;观察着红绿灯有节奏地变换&#xff0c;车辆井然有序地通过—…...

LM331芯片实测翻车记:从面包板到PCB,为什么我的V/F转换电路输出总在抖?

LM331电压频率转换电路实战&#xff1a;从抖动问题到稳定性优化全解析 作为一名电子工程师&#xff0c;我最近在项目中遇到了一个看似简单却令人头疼的问题——使用LM331芯片搭建的电压频率转换电路输出信号始终存在明显抖动。这原本应该是一个教科书级别的经典电路&#xff0c…...

5大技术突破:Unity Figma Bridge如何革命性改变游戏UI开发流程

5大技术突破&#xff1a;Unity Figma Bridge如何革命性改变游戏UI开发流程 【免费下载链接】UnityFigmaBridge Easily bring your Figma Documents, Components, Assets and Prototypes to Unity 项目地址: https://gitcode.com/gh_mirrors/un/UnityFigmaBridge Unity F…...

用C语言链表实现一个简易图书管理系统(附完整源码)

从零构建C语言链表图书管理系统&#xff1a;工程化实践指南 当你第一次在数据结构课本上看到链表时&#xff0c;是否觉得这些抽象的概念离实际开发很遥远&#xff1f;作为C语言初学者&#xff0c;我完全理解这种困惑——直到亲手用链表实现了一个真正的图书管理系统。本文将带你…...

从莱顿瓶到手机:一个300年前的“水罐”如何塑造了今天的电子世界?

从莱顿瓶到手机&#xff1a;一个300年前的“水罐”如何塑造了今天的电子世界&#xff1f; 1746年&#xff0c;法国物理学家诺莱特在巴黎科学院进行了一场令人瞠目的公开实验&#xff1a;700名僧侣手拉手排成1.5公里长的人链&#xff0c;当首尾两端连接莱顿瓶时&#xff0c;所有…...

2026 国内大厂 Java 最全面试真题(含场景方案+数据库+分布式必问)

开源一套金三银四自刷的面试题库&#xff0c;自己感觉还不错&#xff0c;也拿了几个 Offer&#xff08;三个大厂的&#xff0c;字节、蚂蚁、滴滴&#xff09;&#xff01;下面直接上干货哈&#xff01;需要获取得话可以在文末免费领取JVM 篇&#xff08;87 道&#xff09;JVM 篇…...