2017-04-06 68 views
0

不使用表单的工作我的代码看起来像这样:投入到Web服务在Java中

 Form form = new Form(); 
     form.param("svnr", svnr); 
     form.param("vorname", vorname); 
     form.param("nachname", nachname); 
     client.target(REST_SERVICE_URL + "/lehrer").request(MediaType.APPLICATION_JSON) 
       .put(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE), String.class); 

而且Web服务看起来像这样:

@PUT 
@Path("/lehrer") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public Response createLehrer(@FormParam("svnr") String svnr, @FormParam("vorname") String vorname, 
     @FormParam("nachname") String nachname, @Context HttpServletResponse servletResponse) { 
    Lehrer lehrer = new Lehrer(svnr, vorname, nachname); 

    ManagementDAO.instance.addLehrer(lehrer); 


    return Response.ok(lehrer, MediaType.APPLICATION_JSON).build(); 
} 

我得到这个异常:

javax.servlet.ServletException: javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error 
org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:968) 
org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:795) 
org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:91) 
org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:683) 
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:228) 
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424) 
org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:679) 
org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:435) 
org.glassfish.jersey.client.JerseyInvocation$Builder.put(JerseyInvocation.java:323) 
klauss.examples.jsf.db.JSFDatabase.addLehrer(JSFDatabase.java:167) 

你知道如何解决这个问题吗?我不知道如何解决它。我尝试了一切,但似乎没有任何工作。

+0

我认为这个异常是从'klauss.examples.jsf.db.JSFDatabase.addLehrer(JSFDatabase.java:167)'抛出的。如果该类是您的实施,请编辑该问题并包含源代码。 –

+0

这是一行:'client.target(REST_SERVICE_URL +“/lehrer").request(MediaType.APPLICATION_JSON) .put(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE),String.class);' – adnfkas

+0

我相信网络服务引发了一个异常。您应该检查服务器日志以进行调查。 –

回答

0

500内部服务器错误是一个非常普遍的HTTP状态代码,这意味着网站服务器上出现了问题,但服务器无法针对确切问题进行更具体的描述。

您正在获取HTTP代码500意味着,您的客户端已到达服务器。您需要在服务器端代码中添加一些记录器。可能是一个try {} catch()块来查找服务器端出了什么问题。