尝试使用 JsonNode 访问外部安全 RESTful 服务时出现问题
Issue trying to use JsonNode to access an external secured RESTful service
我正在编写 Java class 来访问第三方 public REST API Web 服务,该服务使用特定 API 进行保护关键参数。
当我将 json 输出保存到本地文件时,我可以使用 Json 节点 API 访问所需的 Json 数组。
例如
JsonNode root = mapper.readTree(new File("/home/op/Test/jsondata/loans.json"));
但是,如果我尝试将实时安全网络 URL 与 JsonNode
一起使用
例如
JsonNode root = mapper.readTree(url);
我得到一个:
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60))
这表明我的类型不匹配。但我假设它更有可能是连接问题。
我正在处理与 REST 服务的连接:
private static String surl = "https://api.rest.service.com/xxxx/v1/users/xxxxx/loans?apikey=xxxx"
public static void main(String[] args) {
try {
URL url = new URL(surl);
JsonNode root = mapper.readTree(url);
....
}
我也试过用:
URL url = new URL(surl);
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
InputStream isr = httpcon.getInputStream();
JsonNode root = mapper.readTree(isr);
结果相同
当我删除 API 密钥时,我收到状态 400 错误。所以我想我不能处理 APIKey 参数。
有没有办法使用 JsonNode 来处理对安全 REST 服务 URL 的调用?我想继续使用 Json 节点 API,因为我只提取了两个 key:value 对来遍历大型数组中的多个对象。
只需尝试简单地将响应读入字符串并将其记录下来,看看实际发生了什么,以及为什么您没有从服务器收到 JSON。
URL url = new URL(surl);
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
InputStream isr = httpcon.getInputStream();
try (BufferedReader bw = new BufferedReader(new InputStreamReader(isr, "utf-8"))) {
StringBuilder sb = new StringBuilder();
String line;
while ((line = bw.readLine()) != null) { // read whole response
sb.append(line);
}
System.out.println(sb); //Output whole response into console or use logger of your choice instead of System.out.println
}
我正在编写 Java class 来访问第三方 public REST API Web 服务,该服务使用特定 API 进行保护关键参数。
当我将 json 输出保存到本地文件时,我可以使用 Json 节点 API 访问所需的 Json 数组。
例如
JsonNode root = mapper.readTree(new File("/home/op/Test/jsondata/loans.json"));
但是,如果我尝试将实时安全网络 URL 与 JsonNode
一起使用例如
JsonNode root = mapper.readTree(url);
我得到一个:
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60))
这表明我的类型不匹配。但我假设它更有可能是连接问题。
我正在处理与 REST 服务的连接:
private static String surl = "https://api.rest.service.com/xxxx/v1/users/xxxxx/loans?apikey=xxxx"
public static void main(String[] args) {
try {
URL url = new URL(surl);
JsonNode root = mapper.readTree(url);
....
}
我也试过用:
URL url = new URL(surl);
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
InputStream isr = httpcon.getInputStream();
JsonNode root = mapper.readTree(isr);
结果相同
当我删除 API 密钥时,我收到状态 400 错误。所以我想我不能处理 APIKey 参数。
有没有办法使用 JsonNode 来处理对安全 REST 服务 URL 的调用?我想继续使用 Json 节点 API,因为我只提取了两个 key:value 对来遍历大型数组中的多个对象。
只需尝试简单地将响应读入字符串并将其记录下来,看看实际发生了什么,以及为什么您没有从服务器收到 JSON。
URL url = new URL(surl);
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
InputStream isr = httpcon.getInputStream();
try (BufferedReader bw = new BufferedReader(new InputStreamReader(isr, "utf-8"))) {
StringBuilder sb = new StringBuilder();
String line;
while ((line = bw.readLine()) != null) { // read whole response
sb.append(line);
}
System.out.println(sb); //Output whole response into console or use logger of your choice instead of System.out.println
}