2012-04-03 42 views
0

我得到一个StreamCorruptedException,我不知道为什么或如何发生。 任何帮助将会很棒! 这里是客户端:StreamCorruptedException:无效的流头:

ClientConfig config = new DefaultClientConfig(); 
Client client = Client.create(config); 
WebResource service = client.resource(getBaseURI()); 
Map params = new HashMap<String, Object>();  
Order[] orders = odao.getOpenOrdersByTenant(tenantID); 

JSONObject jObj = new JSONObject(); 
jObj.put("params", params); 
jObj.put("sourcePath", System.getProperty("user.dir") + "/reports/OpenOrders.jasper"); 
jObj.put("method", "html"); 
jObj.put("datasource", orders); 

ClientResponse response =  service.path("rest").path("jasper").path("getJasperReport").type(MediaType.APPLICATION_JSON).post(ClientResponse.class,jObj); 

服务器:

@POST 
@Path("/getJasperReport") 
@Produces(MediaType.TEXT_HTML) 
@Consumes(MediaType.APPLICATION_JSON) 
public void getJasperReport(@Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse, @Context UriInfo uriInfo) 
       throws ServletException, IOException{ 

ObjectInputStream objInputStream = new ObjectInputStream(servletRequest.getInputStream()); 
JSONObject jobj = (JSONObject) objInputStream.readObject();   

倒数第二行抛出一个java.io.StreamCorruptedException:无效的流头:7B227061

回答

1

ObjectInputStream的是阅读Java序列数据,而不是JSON格式的数据。

您可能想要类似new JSONObject(new JSONTokener(servletRequest.getReader()))

+0

那么如何抽象我的请求实体?或者有更好的方法去解决这个问题吗? – Garvice 2012-04-03 03:41:08

+0

仍然有问题。现在我得到一个非法状态异常,告诉我GetInputStream已经被调用。 – Garvice 2012-04-03 05:44:51

+0

@Garvice - 你现在的代码是什么样的?你是否删除了以前的getInputStream调用? – jtahlborn 2012-04-03 14:04:19

相关问题