2017-01-05 17 views
0

JavaとRESTのトランザクションはとても新しいです。必要なものを提供したり、適切な結果を検索する方法を知らなかったりした場合、私はこれを適切に尋ねなかったことを謝罪します。これに答えるために何かが必要な場合は、私にお知らせください!Java(Jersey) - '結果'のためのREST GETリクエストの検証

私はGETリクエストを作成しましたが、プログラムでそれを調べていくつかの魔法を起こそうとしています。これが通常の古い結果セットであった場合、結果セットにデータが含まれていることを検証するための最初のステップでは、実行するコードの次のビットで失敗することはありません。

私はいくつかの読書をしました。この検証を行うために努力しているコードの最後に、readEntityメソッドを2回(if文で1回、printlnで1回)呼び出すように見えますこのエラーが発生しています。

一度readEntityメソッドが呼び出されると、入力ストリームは明らかに閉じられます。したがって、検証に使用すると、「費やされました」と表示され、次の論理ステップにアクセスできなくなってしまいます。

コードの最後のifステートメントで私が取り組んでいる目標を達成するために使用できる方法を誰かに教えてもらえますか?

ありがとうございました!

Client restClient = ClientBuilder.newClient(); 
    HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("restun","fift33n1010"); 
    restClient.register(feature); 
    URI baseUri = UriBuilder.fromUri("http://hqidlfitwb01/rest").build(); 
    WebTarget target = restClient.target(baseUri); 
    WebTarget resourceTarget = target.path("find").queryParam("searchFor", "Cabinets").queryParam("query", rackID).queryParam("matchOn", "User Attributes").queryParam("matchUserAttributes","RACKID"); 
    System.out.println("URI: "+resourceTarget.getUri()); 
    Response res=resourceTarget.request().get(); 
    if (!res.readEntity(String.class).equals(GlobalMethods.RESTFAILURE)) { 
     System.out.println(" "+res.readEntity(String.class)); 
    } 
    else { 
     System.out.println(" Failure - No records!"); 
    } 

エラーテキスト:

Exception in thread "main" java.lang.IllegalStateException: Entity input stream has already been closed. 
at org.glassfish.jersey.message.internal.EntityInputStream.ensureNotClosed(EntityInputStream.java:228) 
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:854) 
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:808) 
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:326) 
at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:115) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:228) 
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:419) 
at org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:267) 
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:112) 
at frompmtomaximo.AddEQFromSQL.add(AddEQFromSQL.java:50) 
at IntegrationTesting.main(IntegrationTesting.java:22) 
+0

は、 "IF" 条件の前に文字列変数権利を作成し、 "res.readEntity(String.class)" の代わりに、二回実体を読んで、それを評価します。 –

+0

グッドネス...私はこれを前に考えなかったとは思っていません。ありがとうございました! – ogg130

答えて

1
String text = res.readEntity(String.class); 
if (!text.equals(GlobalMethods.RESTFAILURE)) { 
    System.out.println(" "+text); 
} 
関連する問題