| | |
| | | package com.zy.asrs.wms.utils; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | public class WebkitParseUtils { |
| | | |
| | | private static final Pattern BOUNDARY_PATTERN = Pattern.compile("--WebKitFormBoundary([A-Za-z0-9+/]+)"); |
| | | private static final Pattern NAME_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"([^\"]+)\""); |
| | | private static final Pattern VALUE_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"[^\"]+\"\\s*\\n\\s*\\n\\s*([^\\n]+)"); |
| | | |
| | | // 解析WebKitFormBoundary字符串数据 |
| | | public static String parseBoundary(String input) { |
| | | Matcher matcher = BOUNDARY_PATTERN.matcher(input); |
| | | if (matcher.find()) { |
| | | return matcher.group(1); // 返回捕获的字符串 |
| | | } |
| | | return null; // 如果没有匹配,则返回null |
| | | } |
| | | |
| | | // 解析所有name的值 |
| | | public static List<String> parseNames(String input) { |
| | | List<String> names = new ArrayList<>(); |
| | | Matcher matcher = NAME_PATTERN.matcher(input); |
| | | while (matcher.find()) { |
| | | names.add(matcher.group(1)); // 添加捕获到的name值到列表 |
| | | } |
| | | return names; // 返回所有匹配到的name值 |
| | | } |
| | | |
| | | // 解析所有值部分 |
| | | public static List<String> parseValues(String input) { |
| | | List<String> values = new ArrayList<>(); |
| | | Matcher matcher = VALUE_PATTERN.matcher(input); |
| | | while (matcher.find()) { |
| | | String trim = matcher.group(1).trim(); |
| | | Matcher matcher2 = BOUNDARY_PATTERN.matcher(trim); |
| | | if(matcher2.find()) { |
| | | trim = ""; |
| | | } |
| | | values.add(trim); // 添加捕获到的值到列表,并去掉前后的空白 |
| | | } |
| | | return values; // 返回所有匹配到的值 |
| | | } |
| | | |
| | | public static HashMap<String, Object> getFormData(String input) { |
| | | // // 解析WebKitFormBoundary字符串 |
| | | // String boundary = parseBoundary(input); |
| | | // System.out.println("解析出的WebKitFormBoundary字符串是: " + boundary); |
| | | |
| | | // 解析所有name的值 |
| | | List<String> nameValues = parseNames(input); |
| | | // System.out.println("解析出的所有name值是: " + nameValues); |
| | | |
| | | // 解析所有值 |
| | | List<String> values = parseValues(input); |
| | | // System.out.println("解析出的所有值是: " + values); |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | for (int i = 0; i < nameValues.size(); i++) { |
| | | String key = nameValues.get(i); |
| | | // 确保即使值为空也能正常存入map |
| | | String value = i < values.size() ? values.get(i) : ""; |
| | | map.put(key, value); |
| | | } |
| | | |
| | | // System.out.println(JSON.toJSONString(map)); |
| | | return map; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String input = "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" + |
| | | "Content-Disposition: form-data; name=\"locNo\"\n" + |
| | | "\n" + |
| | | "1\n" + |
| | | "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" + |
| | | "Content-Disposition: form-data; name=\"test\"\n" + |
| | | "\n" + |
| | | "123\n" + |
| | | "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" + |
| | | "Content-Disposition: form-data; name=\"quer\"\n" + |
| | | "\n" + |
| | | "111\n" + |
| | | "------WebKitFormBoundarySOfEJLg0rR0hf3mm--"; |
| | | |
| | | getFormData(input); |
| | | |
| | | } |
| | | |
| | | } |
| | | package com.zy.asrs.wms.utils;
|
| | |
|
| | | import com.alibaba.fastjson.JSON;
|
| | |
|
| | | import java.util.HashMap;
|
| | | import java.util.regex.Matcher;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | |
|
| | | public class WebkitParseUtils {
|
| | |
|
| | | private static final Pattern BOUNDARY_PATTERN = Pattern.compile("--WebKitFormBoundary([A-Za-z0-9+/]+)");
|
| | | private static final Pattern NAME_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"([^\"]+)\"");
|
| | | private static final Pattern VALUE_PATTERN = Pattern.compile("Content-Disposition: form-data; name=\"[^\"]+\"\\s*\\n\\s*\\n\\s*([^\\n]+)");
|
| | |
|
| | | // 解析WebKitFormBoundary字符串数据
|
| | | public static String parseBoundary(String input) {
|
| | | Matcher matcher = BOUNDARY_PATTERN.matcher(input);
|
| | | if (matcher.find()) {
|
| | | return matcher.group(1); // 返回捕获的字符串
|
| | | }
|
| | | return null; // 如果没有匹配,则返回null
|
| | | }
|
| | |
|
| | | // 解析所有name的值
|
| | | public static List<String> parseNames(String input) {
|
| | | List<String> names = new ArrayList<>();
|
| | | Matcher matcher = NAME_PATTERN.matcher(input);
|
| | | while (matcher.find()) {
|
| | | names.add(matcher.group(1)); // 添加捕获到的name值到列表
|
| | | }
|
| | | return names; // 返回所有匹配到的name值
|
| | | }
|
| | |
|
| | | // 解析所有值部分
|
| | | public static List<String> parseValues(String input) {
|
| | | List<String> values = new ArrayList<>();
|
| | | Matcher matcher = VALUE_PATTERN.matcher(input);
|
| | | while (matcher.find()) {
|
| | | String trim = matcher.group(1).trim();
|
| | | Matcher matcher2 = BOUNDARY_PATTERN.matcher(trim);
|
| | | if(matcher2.find()) {
|
| | | trim = "";
|
| | | }
|
| | | values.add(trim); // 添加捕获到的值到列表,并去掉前后的空白
|
| | | }
|
| | | return values; // 返回所有匹配到的值
|
| | | }
|
| | |
|
| | | public static HashMap<String, Object> getFormData(String input) {
|
| | | // // 解析WebKitFormBoundary字符串
|
| | | // String boundary = parseBoundary(input);
|
| | | // System.out.println("解析出的WebKitFormBoundary字符串是: " + boundary);
|
| | |
|
| | | // 解析所有name的值
|
| | | List<String> nameValues = parseNames(input);
|
| | | // System.out.println("解析出的所有name值是: " + nameValues);
|
| | |
|
| | | // 解析所有值
|
| | | List<String> values = parseValues(input);
|
| | | // System.out.println("解析出的所有值是: " + values);
|
| | |
|
| | | HashMap<String, Object> map = new HashMap<>();
|
| | | for (int i = 0; i < nameValues.size(); i++) {
|
| | | String key = nameValues.get(i);
|
| | | // 确保即使值为空也能正常存入map
|
| | | String value = i < values.size() ? values.get(i) : "";
|
| | | map.put(key, value);
|
| | | }
|
| | |
|
| | | // System.out.println(JSON.toJSONString(map));
|
| | | return map;
|
| | | }
|
| | |
|
| | | public static void main(String[] args) {
|
| | | String input = "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
|
| | | "Content-Disposition: form-data; name=\"locNo\"\n" +
|
| | | "\n" +
|
| | | "1\n" +
|
| | | "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
|
| | | "Content-Disposition: form-data; name=\"test\"\n" +
|
| | | "\n" +
|
| | | "123\n" +
|
| | | "------WebKitFormBoundarySOfEJLg0rR0hf3mm\n" +
|
| | | "Content-Disposition: form-data; name=\"quer\"\n" +
|
| | | "\n" +
|
| | | "111\n" +
|
| | | "------WebKitFormBoundarySOfEJLg0rR0hf3mm--";
|
| | |
|
| | | getFormData(input);
|
| | |
|
| | | }
|
| | |
|
| | | }
|