我们正在使用Rest API。如果我们传递%
字符串,则在调用登录API时会从Application.cfc
URLDecoder:不完整的尾随转义(%)模式
有什么办法可以摆脱这个错误吗?我得到了以下错误,可能有助于复制问题。
URLDecoder:不完整的尾随转义(%)模式 javax.ws.rs.WebApplicationException
请求 - struct
内容:email =test@gmail.com&密码= 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
user-agent :2.0.2.5 rv:23(手机; Android OS 6.0.1; en_US)
方法:POST
协议:HTTP / 1.1
栈跟踪
javax.ws.rs.WebApplicationException:java.lang.IllegalArgumentException异常:URLDecoder:在com.sun.jersey.core.impl.provider.entity.BaseFormProvider.readFrom(BaseFormProvider.java:86不完全尾随逃逸(%)图案)com.sun.jersey.core.impl.provider.entity.FormProvider.readFrom(FormProvider.java:73)at 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的com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:538)。 spi.container.AdaptingContainerRequest.getEntity(AdaptingContainerRequest.java:225)位于com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider的coldfusion.rest.provider.CFContainerRequest.getEntity(CFContainerRequest.java:85)。 process.sorm(FormDispatchProvider.java:103)位于com.sun.j的com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.access $ 000(FormDispatchProvider.java:68) com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider $ EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java)中的ersey.server.impl.model.method.dispatch.FormDispatchProvider $ FormParameterProvider.getInjectableValues(FormDispatchProvider.java:115) :153)at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider $ ObjectOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:256)at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher位于coldfusion.filter.RequestMonitorFilter的coldfusion.rest.method.dispatch.RESTMethodExecutionFilter.invoke(RESTMethodExecutionFilter.java:42)中的.dispatch(ResourceJavaMethodDispatcher.java:75)位于coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:444)。在coldfusion.rest.method.dispatch.CFExceptionHandlingDispatcher.dispatch的coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)中调用(RequestMonitorFilter.java:48) (CFExceptionHandlingDispatcher.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)at 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)at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComp) onent.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.DilasourceFilter.invoke的coldfusion.filter.ClilstalsFilter.invoke(GlobalsFilter.java:38)的coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) (datasourceFilter.java:22)coldfusion.rest.servlet.RestWrapRequestFilter.invoke(RestWrapRequestFilter.java:46),位于coldfusion.rest.servlet.CFRestServlet的coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:356)。服务(CFRestServlet.java:347)在javax.servlet.http.HttpServlet.service( HttpServlet.java:731)位于org.apache.catalina.core.ApplicationFilterChain的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)的coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)位于org.apache.catalina.core的coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)的coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)中的.doFilter(ApplicationFilterChain.java:208)。 ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)atg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)at 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.fi lter.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(未知来源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:483)在玉米.ingral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:79)at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang .reflect.Method.invoke(Method.java:483)在com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:53)在com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut位于org.apache的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java)的org.apache上的$ 1.invoke(NewFilterChainPointCut.java:41)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)的.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)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)在组织java.util.concurrent.Thr上的.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:316) eadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java: 61)at java.lang.Thread.run(Thread.java:745)引起:java.lang.IllegalArgumentException:URLDecoder:java.net.URLDecoder.decode中不完整的尾随转义(%)模式(URLDecoder.java:187)在com.sun.jersey.core.impl.provider.entity.BaseFormProvider.readFrom(BaseFormProvider.java:80)... 78更多
答案 0 :(得分:1)
您需要将%url编码为%25
。像这样,从错误报告中提示:
email=test@gmail.com&password=Test06489%25&auth_type=0
答案 1 :(得分:1)
我通过在25
之后添加另一个%25
解决了这个问题,因此API调用为%2525