報錯:Message is larger than modules


我們將請求體加密后,訪問后台,在獲取applyData時報錯。

原代碼如下:

public class DataEncrypt2Test {
    public static void main(String[] args) throws Exception {
        String pubKey = "省略不寫";// 生產批次
        StringBuilder sb = new StringBuilder();
        sb.append("很長字符串1,省略不寫,下同");
        sb.append("很長字符穿2");
        sb.append("很長字符串3");
        sb.append("很長字符串4");
        sb.append("很長字符串5");
        sb.append("很長字符串6");
        sb.append("很長字符串7" );
        sb.append("很長字符串8");
        sb.append("很長字符串9");
        sb.append("很長字符串10");
        sb.append("很長字符串11");
        String str = sb.toString();
        
        String requestData = "{\n" +
                "\t\"ycocode\": \"09876543211234567890\",\n" +
                "\t\"yconame\": \"眾益制葯\",\n" +
                "\t\"medicode\": \"B1243253\",\n" +
                "\t\"mediname\": \"當歸\",\n" +
                "\t\"allowname\": \"張山\",\n" +
                "\t\"locality\": \"深圳\",\n" +
                "\t\"batchno\": \"B345353\",\n" +
                "\t\"batchciid\": \"3452352\",\n" +
                "\t\"prodate\": \"2021-10-10\",\n" +
                "\t\"checkdate\": \"2021-11-11\",\n" +
                "\t\"packgg\": \"10/箱\",\n" +
                "\t\"checkname\": \"王五\",\n" +
                "\t\"norm\": \"國標\",\n" +
                "\t\"arts\": \"工藝01\",\n" +
                "\t\"yreport\": \""+ str +"\",\n" +
                "\t\"updatetime\": \"2021-12-12\",\n" +
                "\t\"ybatchid\": \"1232141\",\n" +
                "\t\"quantity\": \"100\",\n" +
                "\t\"unit\": \"kg\",\n" +
                "\t\"checkname\": \"王五\",\n" +
                "\t\"billtype\": \"銷售出庫\"\n" +
                "}";
        
        String encrypt = RSAUtils.encryptByPublicKey(requestData, pubKey);
        System.out.println("requestData===> ");
        System.out.println(encrypt);
  }
}

后台代碼:

@RestController
@RequestMapping("/api")
public class ProducerBatchController {
    @Autowired
    private ProduceBatchService produceBatchService;

    @PostMapping("/pro")
    @ResponseBody
    public String saveProduce(@RequestBody JSONObject params) {
        JSONObject applyData = params.getJSONObject("applyData");
        return produceBatchService.saveProduceBatch(applyData);
    }

}

從params中獲取applyData時報錯:Message is larger than modules

原因分析:由於requestData中有很多\t或\n,並不是純粹的json字符串,導致fastjson在解析的時候報錯。

解決辦法,封裝成JSONObject

public class DataEncrypt2Test {
    public static void main(String[] args) throws Exception {
        String pubKey = "省略不寫";// 生產批次
        StringBuilder sb = new StringBuilder();
        sb.append("很長字符串1,省略不寫,下同");
        sb.append("很長字符穿2");
        sb.append("很長字符串3");
        sb.append("很長字符串4");
        sb.append("很長字符串5");
        sb.append("很長字符串6");
        sb.append("很長字符串7" );
        sb.append("很長字符串8");
        sb.append("很長字符串9");
        sb.append("很長字符串10");
        sb.append("很長字符串11");
        String str = sb.toString();
        
        JSONObject json = new JSONObject();
        json.put("ycocode","09876543211234567890");
        json.put("yconame","華潤制葯");
        json.put("medicode","B1243253");
        json.put("mediname","當歸");
        json.put("allowname","張山");
        json.put("locality","深圳");
        json.put("batchno","B345353");
        json.put("batchciid","3452352");
        json.put("prodate","2021-10-10");
        json.put("checkdate","2021-11-11");
        json.put("packgg","10/箱");
        json.put("checkname","王五");
        json.put("norm","國標");
        json.put("arts","工藝01");
        json.put("yreport",str);
        json.put("creport",str);
        json.put("updatetime","2021-12-12");
        json.put("ybatchid","1232141");
        json.put("unit","kg");
        json.put("quantity","100");
        json.put("billtype","銷售出庫");
        
        String encrypt = RSAUtils.encryptByPublicKey(json.toString(), pubKey);
        System.out.println("requestData===> ");
        System.out.println(encrypt);
  }
}

問題解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM