2013-09-30 3 views
0

Я создал класс, который предоставляет метод для получения через REST объекта JSON, который затем следует десериализовать как LinkedHashMap. Метод заключается в следующем:FileNotFoundException с ObjectMapper в JSON/REST

@Override 
public LinkedHashMap refreshStatus(String metricType, String metricPeriod) { 
    ObjectMapper mapper = new ObjectMapper(); 
    LinkedHashMap<String,String> map = null; 

    try { 
     map = mapper.readValue(new File("http://localhost:8081/Metrics/Stats/JSONP/ReceiveData/"+metricType+"/"+metricPeriod+"/?callback="), LinkedHashMap.class); 


    } catch (JsonParseException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
} 
    return map; 
} 

Когда я вхожу в браузере URL-адрес с некоторыми специфическими параметрами, т.е.

http://localhost:8081/Metrics/Stats/JSONP/ReceiveData/Totals/All/?callback= 

я получить правильный объект JSON:

{"Boxes":"8","Contracts":"23","Updates":"1","Deactivations":"4","ActiveBoxes":"33","InactiveBoxes":"1","PendingInstallationsContracts":"70","Alerts":"626","PercentsBoxInstalled":"100.0%","Miles":"0"} 

Однако когда Я запускаю приложение и метод вызывается, я получаю FileNotFoudException:

java.io.FileNotFoundException: http:/localhost:8081/Metrics/Stats/JSONP/ReceiveData/Totals/All/?callback= (No such file or directory) 

Кто-нибудь знает, где проблема? Заранее спасибо!

ответ

2

Этот файл действительно не может быть найден на вашем компьютере. Вы пытаетесь создать файловые объекты, совместимые с реальным файлом, в вашей локальной файловой системе и указать URL-адрес в качестве аргумента вместо пути файловой системы.

Вы действительно хотите выполнить HTTP GET, т. Е. Сделать что-то вроде следующего.

urlString = "http://localhost:8081/Metrics/Stats/JSONP/ReceiveData/Totals/All/?callback="; 
URL url = new URL(urlString); 
URLConnection conn = url.openConnection(); 
map = mapper.readValueconn.getInputStream(); 
+1

Существует не такой способ, как readValueconn .. – Anto

Смежные вопросы