curl解析工具

2023-05-16

main

package com.alone.main;

import com.alone.pojo.base.CurlParams;
import com.alone.util.FileUtil;
import com.alone.util.ResolveCurl;

import java.io.*;

/**
 * @Author: alone
 * @Date: 2021/12/4 12:15
 */
public class DemoMain {
    public static void main(String[] args) throws IOException {

        String path = "/Users/maoyan/work/curl.txt";
        String curl = new FileUtil().getCurl(path);
        ResolveCurl rc = new ResolveCurl(curl);
        CurlParams cp = rc.getParams();

        System.out.println(cp.getUrl());
        System.out.println(cp.getData());

    }
}

定义curl对象

package com.alone.pojo.base;

import lombok.Data;

import java.util.Map;

/**
 * @Author: alone
 * @Date: 2021/11/7 10:41
 */
@Data
public class CurlParams {
    public String url;
    public Map<String,String> header;
    private String data;
}

解析curl到对象

/**
 * @Author: alone
 * @Date: 2021/11/6 17:30
 * 解析curl
 */

public class ResolveCurl {
    public String curl;
    public ResolveCurl(String curl){
        this.curl = curl;
    }


    public CurlParams getParams(){
        String[] a = curl.split("\\n");
        CurlParams cp = new CurlParams();
        HashMap<String,String> h = new HashMap<>();
        for(int j = 0; j<a.length;j++){
            if(a[j].contains("curl")){
                String url = a[j].replace("curl"," ").replace('\'',' ').replace('\\',' ').trim();
                cp.setUrl(url);
            }else if(a[j].contains("-H")){
                String s = a[j].replace("-H"," ").replace('\'',' ').replace('\\',' ').trim();
                h.put(s.split(": ")[0],s.split(": ")[1].trim());
            }else if(a[j].contains("--data-raw")){
                String data = a[j].replace("--data-raw"," ").replace('\'',' ').replace('\\',' ').trim();
                cp.setData(data);
            }
        }
        cp.setHeader(h);
        return cp;
    }

}

读取txt文件的curl

package com.alone.util;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * @Author: alone
 * @Date: 2021/12/4 16:41
 */
public class FileUtil {

    public String getCurl(String path) throws IOException {
        String content = "";
        StringBuilder builder = new StringBuilder();

        File file = new File(path);
        InputStreamReader streamReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
        BufferedReader bufferedReader = new BufferedReader(streamReader);

        while ((content = bufferedReader.readLine()) != null) {
            builder.append(content+"\n");
        }

        return builder.toString();
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

curl解析工具 的相关文章

随机推荐

  • STM32的光敏传感器

    STM32的光敏传感器 简介硬件连接计算公式程序 简介 1 照射光敏二极管的光强不同 xff0c 通过光敏二极管的电流大小就不同 xff0c 所以可以通过检测电流大小 xff0c 达到检测光强的目的 利用这个电流变化 xff0c 我们串接一
  • MPU6050寄存器介绍

    MPU6050寄存器介绍 MPU6050寄存器介绍电源管理寄存器1 xff08 0X6B xff09 陀螺仪配置寄存器 xff08 0X1B xff09 加速度传感器配置寄存器 xff08 0X1C xff09 FIFO使能寄存器 xff0
  • (10)查看RGB摄像头和深度摄像头

    查看RGB摄像头和深度摄像头 RGB摄像头深度摄像头 1 小车开机 xff0c 连接wifi xff0c 远程登录 登录密码 xff1a dongguan ssh wheeltec 64 192 168 0 100 2 挂载 挂载密码 xf
  • (11)色块跟踪

    色块跟踪 一 查看色块追踪的文件位置 xff1a 在ros simple follower文件下的simple followe的Launch文件 二 可调整识别色块的阈值 xff0c 追踪过程中最大速度 xff0c 中距值 xff0c PI
  • (6)ROS与STM32之间的联系

    ROS与STM32之间的联系 简介两者之间的关系两者之间的通信ROS如何在代码层面去接收stm32发送过来的数据1 整体框架2 机器人底盘类3 构造函数4 主函数5 循环功能函数6 析构函数 简介 1 如何实现ROS与stm32之间的通信
  • keil 局部变量不能查看值,显示为not in scope

    关于编译器的优化 xff0c 参考网上的8051系列的说明如下 xff1a xfeff xfeff 0级优化 xff1a 1 常数折叠 xff1a 只要有可能 xff0c 编译器就执行将表达式化为常数数字的计算 xff0c 其中包括运行地址
  • 算法——均方根检波

    均方根检波 1 均方根检波技术2 高精度采样技术3 STM32的ADC4 程序工程文件 1 均方根检波技术 1 均值检波电路通常采用电容充放电电路作为平均值电路 2 由于输出为整流平均值 xff0c 要求电容充放电时间常数相等 3 电容充放
  • 二.LVGL学习——(lv_obj基础对象)

    二 LVGL学习 xff08 lv obj基础对象 xff09 1 介绍2 对象的工作机制3 对象的创建与删除4 Screen 屏幕对象5 实例代码 xff08 1 xff09 6 实例代码 xff08 2 xff09 1 介绍 LVGL是
  • 三.LVGL学习——(Buttons styles)

    三 LVGL学习 xff08 Buttons styles xff09 1 按钮对象样式 2 程序 定义三个lv style t变量 static lv style t style btn 按钮1按下前的样式变量 static lv sty
  • 51单片机串行通信原理

    51单片机串行通信原理 计算机通信串行通信异步通信同步通信数据传送速率传输方向 单片机串行口串行口特殊功能寄存器串行口控制寄存器SCON电源控制寄存器PCON 波特率的设定与计算 PC与多个单片机通信串口如何使用 计算机通信 计算机通信 x
  • 基于动态窗口法(DWA)的局部避障算法研究及MATALB的实现

    一 动态窗口法基本概念 1 1 速度采样空间 1 2 评价函数 二 基于Matlab的机器人局部避障仿真 一 动态窗口法基本概念 动态窗口方法 DynamicWindowApproach 是一种可以实现实时避障的局部规划算法 xff0c 通
  • ROS(python)如何实现1个节点同时订阅2个话题,并实现话题同步,调用同一个callback

    1 创建talker1 span class token comment usr bin env python span span class token comment license removed for brevity span s
  • java与c++的性能比较

    java与c 43 43 的性能比较 参考其他文章 一 从编译器的角度分析性能差异 许多程序员印象中可能认为c 43 43 相比较于java语言性能会更好一点 xff0c 运行速度会快一点 这其中主要是因为java刚出现的时候JIT编译技术
  • OO-数字串char*与数值int_double之间转换

    OO 数字串char 与数值int double之间转换 文章目录 OO 数字串char 与数值int double之间转换 一 任务描述二 TestCase 2 测试集 需要填空的代码源代码 xff08 可以复制在编译器里面自行调试 xf
  • Altium Designer 生成 BOM(Bill of Material)

    画好图后 xff0c 生成 BOM xff08 Bill of Material xff09 xff1a 1 选择 Reports xff08 报告 xff09 gt gt Bill of Materials 材料清单 2 选择BOM表表头
  • CAN总线协议:标准CAN和扩展CAN

    CAN通讯协议是一个载波侦听 基于报文优先级碰撞检测和仲裁 xff08 CSMA CD 43 AMP xff09 的多路访问协议 CSMA的意思是总线上的每一个节点在企图发送报文前 xff0c 必须要监听总线 xff0c 当总线处于空闲时
  • c++new操作符笔记

    c 43 43 new语句 功能 xff1a 堆区开辟一组数据 语法 xff1a new 数据类型 注意点 xff1a new创建的数据会返回该数据对应的类型指针 xff0c 另外堆区开辟的数据由程序员手动释放
  • 循环冗余校验

    循环冗余校验 xff08 CRC xff09 是一个错误检测码在数字常用网络和存储设备 xff0c 以检测到的原始数据的意外改变 进入这些系统的数据块将根据其内容的多项式除法运算的余数获得一个简短的校验值 在检索时 xff0c 将重复计算
  • 串口通讯(USART)

    对于通讯协议 xff0c 我们也以分层的方式来理解 xff0c 最基本的是把它分为物理层和协议层 物理层规定通讯系统中具有机械 电子功能部分的特性 xff0c 确保原始数据在物理媒体的传输 协议层主要规定通讯逻辑 xff0c 统一收发双方的
  • curl解析工具

    main span class token keyword package span span class token namespace com span class token punctuation span alone span c