我已经使用tomcat web容器和泽西库制作了一个简单的RESTful Web服务。ArrayIndexOutOfBoundsException:1在Web服务器中
我只覆盖了post方法,其余的所有默认设置都被使用。
在从服务器机器发送POST
来自curl
的查询时,我收到了预期的响应。从其他机器也,我得到预期的响应GET
查询,但对于POST
我得到java.lang.
ArrayIndexOutOfBoundsException: 1
异常错误。 POST方法是这样的:
@POST
@Produces(MediaType.TEXT_PLAIN)
public String post(String str) {
String[] parts = str.split("&");
String[] param1 = parts[0].split("=");//value1=param1[1] (one/two): query type
String[] param2 = parts[1].split("=");//value2=param2[1]
String[] param3 = parts[2].split("=");//value3=param3[1]
String[] param4 = parts[3].split("=");//value4=param4[1]
if(param1[1].equals("one")){
return hashGenerator(param2[1],param3[1]);
}else if(param1[1].equals("two")){
return saveInput(param2[1],param3[1],param4[1]);
}
return "Unexpected Query";
}
从服务器的响应是:
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.ArrayIndexOutOfBoundsException: 1
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:421)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:222)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
java.lang.ArrayIndexOutOfBoundsException: 1
com.va.jersey.helloworld.Hello.post(Hello.java:39)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:164)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:181)
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:203)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:101)
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:305)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
org.glassfish.jersey.internal.Errors.process(Errors.java:315)
org.glassfish.jersey.internal.Errors.process(Errors.java:297)
org.glassfish.jersey.internal.Errors.process(Errors.java:267)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:288)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1110)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:401)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:335)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:222)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
可以请您建议可能故障....
发布您的'com.va.jersey.helloworld.Hello'我的意思是代码特别是post方法。 – Saif
你的一个'split'不给你2个阵列位置...... –
当我给命令'curl --data“param1 = value1&param2 = value2&param3 = value3&param4 = value4&”http:// myAddr ...... ../.../.....'我得到了正确的回复 –