Response.readEntity(String.class) 无法读取响应。

huangapple go评论105阅读模式
英文:

Response.readEntity(String.class) failing to read the response

问题

最近,我突然遇到了一个关于读取实体 API 的问题。我已经附上了 pom.xml 文件以及所使用的代码,能否请有人帮我找出问题所在,代码是用来读取响应的:

  1. Response serverResponse = executeRequest(httpPost, log);
  2. String responseData = serverResponse.readEntity(String.class);

我遇到的错误是:

  1. java.lang.IllegalStateException: Method not supported on an outbound message.
  2. at org.glassfish.jersey.message.internal.OutboundJaxrsResponse.readEntity(OutboundJaxrsResponse.java:144)

pom.xml 文件中的依赖项如下:

  1. <dependencies>
  2. <!-- https://mvnrepository.com/artifact/com.ibm.mfp/adapter-maven-api -->
  3. <dependency>
  4. <groupId>com.ibm.mfp</groupId>
  5. <artifactId>adapter-maven-api</artifactId>
  6. <version>8.0.2018071507</version>
  7. <scope>provided</scope>
  8. </dependency>
  9. <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
  10. <dependency>
  11. <groupId>org.springframework</groupId>
  12. <artifactId>spring-web</artifactId>
  13. <version>3.0.4.RELEASE</version>
  14. <type>jar</type>
  15. </dependency>
  16. <!-- https://mvnrepository.com/artifact/log4j/log4j -->
  17. <dependency>
  18. <groupId>log4j</groupId>
  19. <artifactId>log4j</artifactId>
  20. <version>1.2.17</version>
  21. </dependency>
  22. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
  23. <dependency>
  24. <groupId>org.apache.commons</groupId>
  25. <artifactId>commons-io</artifactId>
  26. <version>1.3.2</version>
  27. </dependency>
  28. <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
  29. <dependency>
  30. <groupId>com.fasterxml.jackson.core</groupId>
  31. <artifactId>jackson-annotations</artifactId>
  32. <version>2.9.7</version>
  33. </dependency>
  34. <!-- https://mvnrepository.com/artifact/com.ibm.mfp/mfp-java-token-validator -->
  35. <dependency>
  36. <groupId>com.ibm.mfp</groupId>
  37. <artifactId>mfp-java-token-validator</artifactId>
  38. <version>8.0.2017020112</version>
  39. </dependency>
  40. <!-- https://mvnrepository.com/artifact/com.ibm.mfp/mfp-security-checks-base -->
  41. <dependency>
  42. <groupId>com.ibm.mfp</groupId>
  43. <artifactId>mfp-security-checks-base</artifactId>
  44. <version>8.0.2018030404</version>
  45. </dependency>
  46. <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
  47. <dependency>
  48. <groupId>com.google.code.gson</groupId>
  49. <artifactId>gson</artifactId>
  50. <version>2.8.5</version>
  51. </dependency>
  52. <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
  53. <dependency>
  54. <groupId>javax.ws.rs</groupId>
  55. <artifactId>javax.ws.rs-api</artifactId>
  56. <version>2.0.1</version>
  57. </dependency>
  58. </dependencies>

错误消息如下:

  1. nested exception is java.lang.AbstractMethodError: javax/ws/rs/core/Response.readEntity(Ljava/lang/Class;)Ljava/lang/Object;, status=500
英文:

Recently I started facing an issue all of a sudden for read entity API.
I have attached the pom.xml and the code used could someone please help me find the issue here,
code that is reading the response

  1. Response serverResponse = executeRequest(httpPost, log);
  2. String responseData = serverResponse.readEntity(String.class);

Error that I was getting is

  1. java.lang.IllegalStateException: Method not supported on an outbound message.
  2. at org.glassfish.jersey.message.internal.OutboundJaxrsResponse.readEntity(OutboundJaxrsResponse.java:144)

pom.xml

  1. &lt;dependencies&gt;
  2. &lt;!-- https://mvnrepository.com/artifact/com.ibm.mfp/adapter-maven-api --&gt;
  3. &lt;dependency&gt;
  4. &lt;groupId&gt;com.ibm.mfp&lt;/groupId&gt;
  5. &lt;artifactId&gt;adapter-maven-api&lt;/artifactId&gt;
  6. &lt;version&gt;8.0.2018071507&lt;/version&gt;
  7. &lt;scope&gt;provided&lt;/scope&gt;
  8. &lt;/dependency&gt;
  9. &lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-web --&gt;
  10. &lt;dependency&gt;
  11. &lt;groupId&gt;org.springframework&lt;/groupId&gt;
  12. &lt;artifactId&gt;spring-web&lt;/artifactId&gt;
  13. &lt;version&gt;3.0.4.RELEASE&lt;/version&gt;
  14. &lt;type&gt;jar&lt;/type&gt;
  15. &lt;/dependency&gt;
  16. &lt;!-- https://mvnrepository.com/artifact/log4j/log4j --&gt;
  17. &lt;dependency&gt;
  18. &lt;groupId&gt;log4j&lt;/groupId&gt;
  19. &lt;artifactId&gt;log4j&lt;/artifactId&gt;
  20. &lt;version&gt;1.2.17&lt;/version&gt;
  21. &lt;/dependency&gt;
  22. &lt;!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io --&gt;
  23. &lt;dependency&gt;
  24. &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
  25. &lt;artifactId&gt;commons-io&lt;/artifactId&gt;
  26. &lt;version&gt;1.3.2&lt;/version&gt;
  27. &lt;/dependency&gt;
  28. &lt;!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --&gt;
  29. &lt;dependency&gt;
  30. &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
  31. &lt;artifactId&gt;jackson-annotations&lt;/artifactId&gt;
  32. &lt;version&gt;2.9.7&lt;/version&gt;
  33. &lt;/dependency&gt;
  34. &lt;!-- https://mvnrepository.com/artifact/com.ibm.mfp/mfp-java-token-validator --&gt;
  35. &lt;dependency&gt;
  36. &lt;groupId&gt;com.ibm.mfp&lt;/groupId&gt;
  37. &lt;artifactId&gt;mfp-java-token-validator&lt;/artifactId&gt;
  38. &lt;version&gt;8.0.2017020112&lt;/version&gt;
  39. &lt;/dependency&gt;
  40. &lt;!-- https://mvnrepository.com/artifact/com.ibm.mfp/mfp-security-checks-base --&gt;
  41. &lt;dependency&gt;
  42. &lt;groupId&gt;com.ibm.mfp&lt;/groupId&gt;
  43. &lt;artifactId&gt;mfp-security-checks-base&lt;/artifactId&gt;
  44. &lt;version&gt;8.0.2018030404&lt;/version&gt;
  45. &lt;/dependency&gt;
  46. &lt;!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --&gt;
  47. &lt;dependency&gt;
  48. &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt;
  49. &lt;artifactId&gt;gson&lt;/artifactId&gt;
  50. &lt;version&gt;2.8.5&lt;/version&gt;
  51. &lt;/dependency&gt;
  52. &lt;!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api --&gt;
  53. &lt;dependency&gt;
  54. &lt;groupId&gt;javax.ws.rs&lt;/groupId&gt;
  55. &lt;artifactId&gt;javax.ws.rs-api&lt;/artifactId&gt;
  56. &lt;version&gt;2.0.1&lt;/version&gt;
  57. &lt;/dependency&gt;

</dependencies>

error message:

nested exception is java.lang.AbstractMethodError: javax/ws/rs/core/Response.readEntity&#40;Ljava/lang/Class&#59;&#41;Ljava/lang/Object&#59;, status=500

答案1

得分: 2

我通过使用以下代码解决了这个问题:

  1. String responseData = serverResponse.getEntity().toString();

而不是:

  1. String responseData = serverResponse.readEntity(String.class);

这与我们构造响应的方式有关。我之前是这样操作响应的:

  1. Response.ResponseBuilder responseBuilder = Response
  2. .status(serverResponse.getStatusLine().getStatusCode())
  3. .entity(responseData != null && !responseData.isEmpty() ? responseData : "{}");

然后当我将 readEntity 更改为 getEntity 时,对我来说问题解决了。

英文:

I fixed this problem by using

  1. String responseData = serverResponse.getEntity().toString();

instead of

  1. String responseData = serverResponse.readEntity(String.class);

It has something to do with the way we form the response. I was manipulating response as

  1. Response.ResponseBuilder responseBuilder = Response
  2. .status(serverResponse.getStatusLine().getStatusCode())
  3. .entity(responseData != null &amp;&amp; !responseData.isEmpty() ? responseData : &quot;{}&quot;);

and then I was using String responseData = serverResponse.readEntity(String.class); when I changed readEntity to getEntity it worked fine for me.

huangapple
  • 本文由 发表于 2020年8月19日 15:23:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/63481908.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定