Вызов API ColdFusion Rest: URLDecoder: шаблон неполного завершающего перехода (%)

Мы используем Rest API. При вызове API входа в систему, если мы передаем строку %, она генерирует эту ошибку из Application.cfc

URLDecoder: неполный завершающий escape-шаблон (%)

Можно ли как-нибудь избавиться от этой ошибки? Я получил следующую ошибку, которая может помочь воспроизвести проблему.

URLDecoder: шаблон неполного завершающего перехода (%) javax.ws.rs.WebApplicationException

Запрос - структура

  • содержание : [email protected]&password=Test06489%&auth_type=0

  • заголовки

  • Принять кодировку :gzip

  • IDFA : c4ca9c604a15254b

  • TOMCATCGIHTTPURL000000006A6B0000 : /rest/icon/api/v1/authorization/login

  • X-ORIGINAL-URL : /rest/icon/api/v1/authorization/login

  • X-REWRITE-URL : /rest/icon/api/v1/authorization/login

  • соединение : Keep-Alive

  • длина содержимого : 59

  • тип контента : application/x-www-form-urlencoded

  • хост : example.com

  • ndt : H_GJvwvp8wXirIvs8AV-byQCiD7mfCmDclFH3lblksw75e-4U0CReX3-J

  • агент пользователя : 2.0.2.5 rv:23 (телефон; ОС Android 6.0.1; en_US)

  • метод : POST

  • протокол : HTTP/1.1

Отслеживание стека

Вам нужно закодировать % как %. Вот так, взяв подсказку из вашего отчета об ошибке:


person Pritesh    schedule 09.03.2017    source источник
comment
где вы используете %? дайте свой код.   -  person Beginner    schedule 09.03.2017
comment
На самом деле это вызывается из вызова API из Android? Есть ли у нас возможность избежать этого с нашей стороны.   -  person Pradeep Kumar Prabaharan    schedule 09.03.2017


Ответы (2)


Я решил эту проблему, добавив еще один %25 после моего [email protected]&password=Test06489%25&auth_type=0, чтобы вызов API читал _3_

[email protected]&password=Test06489%25&auth_type=0

person Jules    schedule 09.03.2017
comment
@Pritesh, если вы опубликуете раздел кода, который находит ошибку в запросе, возможно, мы сможем сформулировать обходной путь. - person Pritesh; 14.03.2017
comment
javax.ws.rs.WebApplicationException: java.lang.IllegalArgumentException: URLDecoder: неполный завершающий escape-шаблон (%) в com.sun.jersey.core.impl.provider.entity.BaseFormProvider.readFrom(BaseFormProvider.java:86) в com .sun.jersey.core.impl.provider.entity.FormProvider.readFrom(FormProvider.java:73) на com.sun.jersey.core.impl.provider.entity.FormProvider.readFrom(FormProvider.java:58) на com .sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474) на com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:538) на com.sun.jersey.spi.container .AdaptingContainerRequest.getEntity(AdaptingContainerRequest.java:225) в coldfusion.rest.provider.CFContainerRequest.getEntity(CFContainerRequest.java:85) в com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.processForm(FormDispatchProvider .java:103) по адресу com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.access$000(FormDispatchProvider.java:68) по адресу com.sun.jers ey.server.impl.model.method.dispatch.FormDispatchProvider$FormParameterProvider.getInjectableValues(FormDispatchProvider.java:115) в com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java :153) в com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ObjectOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:256) в com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher .dispatch(ResourceJavaMethodDispatcher.java:75) в coldfusion.rest.method.dispatch.RESTMethodExecutionFilter.invoke(RESTMethodExecutionFilter.java:42) в coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:444) в coldfusion.filter.RequestMonitorFilter. invoke(RequestMonitorFilter.java:48) в coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) в coldfusion.rest.method.dispatch.CFExceptionHandlingDispatcher.dispatch(CF ExceptionHandlingDispatcher.java:67) в com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) в com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept( RightHandPathRule.java:147) в com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) в com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept( RightHandPathRule.java:147) в com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) в com.sun.jersey.server.impl.application. WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) на com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) на com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest( WebApplicationImpl.java:1349) по адресу com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) по адресу com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java: 416) в com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) в coldfusion.rest.servlet.CFRestServletContainer.service(CFRestServletContainer.java:143) в coldfusion.rest.servlet.CFRestServletContainer. .service(CFRestServletContainer.java:88) по адресу coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:384) по адресу coldfusion.rest.servlet.RestFilter.invoke(RestFilter.java:58) по адресу coldfusion.filter.ExceptionFilter. invoke(ExceptionFilter.java:94) в coldfusion.filter.ClientScopePersistenceFilter.invoke( ClientScopePersistenceFilter.java:28) в coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) в coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) в coldfusion.rest.servlet.RestWrapRequestFilter.invoke(RestWrapRequestFilter.java :46) в coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:356) в coldfusion.rest.servlet.CFRestServlet.service(CFRestServlet.java:347) в javax.servlet.http.HttpServlet.service(HttpServlet. java:731) в coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) в coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) в coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) в org.apache.catalina.core.ApplicationFilterChain. внутреннийDoFilter(ApplicationFilterChain.ja va:241) в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) в sun.reflect.GeneratedMethodAccessor31.invoke(неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:483) в com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:97) в com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler .doNext(FusionReactorRequestHandler.java:437) на com.intergral.fusionreactor.j2ee.filter. FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:464) в com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36) в sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source) в sun.reflect.DelegatingMethod.AccessorImpl invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:483) в com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:79) в sun.reflect .GeneratedMethodAccessor29.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.intergral.fusionreactor.agent.filter .FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:53) в com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41) в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh ain.java) в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) в org.apache.catalina.authenticator .AuthenticatorBase.invoke(AuthenticatorBase.java:505) на org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) на org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) на org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:450) в org.apache.coyote.ajp.AjpProcessor.process( AjpProcessor.java:197) в org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) в org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) в java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolE xecutor.java:617) в org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) в java.lang.Thread.run(Thread.java:745) Причина: java.lang .IllegalArgumentException: URLDecoder: неполный завершающий escape-шаблон (%) в java.net.URLDecoder.decode(URLDecoder.java:187) в com.sun.jersey.core.impl.provider.entity.BaseFormProvider.readFrom(BaseFormProvider.java: 80) ... еще 78 - person Jules; 14.03.2017

Пожалуйста, покажите код и прочитайте Как мне задать хороший вопрос?.

person rupweb    schedule 08.08.2017