javax.ws.rs.core.Response 转换为 java1.6 中的字符串
javax.ws.rs.core.Response convert to string in java1.6
我想将 Response 转换为字符串
Response response = ClientBuilder.newBuilder().sslContext(sslContext).build().target(url)
.request(MediaType.APPLICATION_JSON).get();
// I have tried as below.. It didn't work
String result = (String)response.getEntity();
错误是java.lang.ClassCastException: org.glassfish.jersey.client.HttpUrlConnector cannot be cast to java.lang.String
请注意,我使用的是 Java 1.6 版本,我无法从 Response class 中找到 readEntity(String.class) 和 getEntity(String.class) 等方法。
另一种方法如下所示,方法是在 get 中给出 String.class。
但是我首先需要 Response 对象来检查状态代码,然后我想将它转换为 String。
String response = ClientBuilder.newBuilder().sslContext(sslContext).build().target(url)
.request(MediaType.APPLICATION_JSON).get(String.class);
请协助解决此问题
readEntity()
方法是要走的路:
Response response = ...
String value = response.readEntity(String.class);
我不明白你为什么说这种方法不适合你:ClientBuilder
class(就像readEntity()
方法)也作为 Client API.
的一部分在 JAX-RS 2.0 (Java EE 7) 中引入
class路径中没有任何 JAX-RS 1.x 依赖项吗?
如果我们不使用 Jersey 客户端 jar,则我们不会获取 readEntity(class) 和 getEntity(class)。这些方法不是 javax.ws.rs.core.Response 的一部分,它们是 Jersey clientjar 的一部分。所以如果我们使用javax.ws.rs.core.Response,那么我们必须手动转换如下
javax.ws.rs.core.Response response;
String result = readInputStreamAsString((InputStream) response.getEntity());
public static String readInputStreamAsString(InputStream in) {
try {
BufferedInputStream bis = new BufferedInputStream(in);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while (result != -1) {
byte b = (byte) result;
buf.write(b);
result = bis.read();
}
return buf.toString();
} catch (IOException ex) {
return null;
}
}
我想将 Response 转换为字符串
Response response = ClientBuilder.newBuilder().sslContext(sslContext).build().target(url)
.request(MediaType.APPLICATION_JSON).get();
// I have tried as below.. It didn't work
String result = (String)response.getEntity();
错误是java.lang.ClassCastException: org.glassfish.jersey.client.HttpUrlConnector cannot be cast to java.lang.String
请注意,我使用的是 Java 1.6 版本,我无法从 Response class 中找到 readEntity(String.class) 和 getEntity(String.class) 等方法。
另一种方法如下所示,方法是在 get 中给出 String.class。 但是我首先需要 Response 对象来检查状态代码,然后我想将它转换为 String。
String response = ClientBuilder.newBuilder().sslContext(sslContext).build().target(url)
.request(MediaType.APPLICATION_JSON).get(String.class);
请协助解决此问题
readEntity()
方法是要走的路:
Response response = ...
String value = response.readEntity(String.class);
我不明白你为什么说这种方法不适合你:ClientBuilder
class(就像readEntity()
方法)也作为 Client API.
class路径中没有任何 JAX-RS 1.x 依赖项吗?
如果我们不使用 Jersey 客户端 jar,则我们不会获取 readEntity(class) 和 getEntity(class)。这些方法不是 javax.ws.rs.core.Response 的一部分,它们是 Jersey clientjar 的一部分。所以如果我们使用javax.ws.rs.core.Response,那么我们必须手动转换如下
javax.ws.rs.core.Response response;
String result = readInputStreamAsString((InputStream) response.getEntity());
public static String readInputStreamAsString(InputStream in) {
try {
BufferedInputStream bis = new BufferedInputStream(in);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while (result != -1) {
byte b = (byte) result;
buf.write(b);
result = bis.read();
}
return buf.toString();
} catch (IOException ex) {
return null;
}
}