2012-04-03 20 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); 

サーバー:無効なストリームヘッダ:7B227061

答えて

1

するObjectInputStreamがされているJavaを読み取るための連載

@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をスローしますJSON形式のデータではありません。

おそらくnew JSONObject(new JSONTokener(servletRequest.getReader()))のようなものが必要です。

+0

リクエストエンティティを抽象化するにはどうすればよいですか?それともこれについてもっと良い方法がありますか? – Garvice

+0

まだ問題があります。私は今、GetInputStreamが既に呼び出されていることを私に伝える違法状態例外を取得しています。 – Garvice

+0

@Garvice - あなたの現在のコードはどのように見えますか?以前のgetInputStreamの呼び出しを削除しましたか? – jtahlborn

関連する問題