IllegalStateException-要求からparamを取り出す


ケース

  • AOPを使用して、必要に応じてログ
  • を書き込みます.
  • POSTリクエスト時にrequestBodyに入るparamを記録するために、リクエストにアクセスしてparamを受信する
  • .
  • このときrequest filterを使用して1回の小包の要求からparamを取り出す
  • は正常なコードを実行していますが、突然本プロジェクトでIllegalStateExceptionが現れ、コントローラに入ることができませんでした.
    テスト
  • 郵便配達員でいい
  • テスト中に異常が発生しました
  • junit
  • プロセス


    1.比較要求


    JUnit test


  • 210705 09:59:29 INFO c.b.a.c.u.CustomJsonUtils - Error reading JSON string: java.lang.IllegalStateException: Cannot call getReader() after getInputStream() has already been called for the current request
  • Postman


  • ReadableResquestWrapperはよく包まれています!
  • 2.比較Filter Chain

  • requestFilterには、FilterRegisterBeanに登録されているにもかかわらず、Junitでテストされた場合、このフィルタは適用されません.
  • JUnit



    Postman



    解決する


    MockMvc設定時フィルタemdhr

        @Before
        public void setUp() throws ServletException {
            mvc = MockMvcBuilders
                    .webAppContextSetup(context)
                    .addFilter(new RequestFilter()) // 추가해줌
                    .apply(springSecurity())
                    .build();
        }

    リファレンス

  • https://www.baeldung.com/java-undeclaredthrowableexception
  • https://stackoverflow.com/questions/7318632/java-lang-illegalstateexception-getreader-has-already-been-called-for-this-re