2013-02-27 55 views
0

所以我想使用restTemplate.getForObject從url加載簡單的JSON文件。 我用一個字符串創建了一個簡單的json文件,但是android無法加載它。 但是,當我在我的模擬器的瀏覽器的網址typ,瀏覽器顯示我的json文件從Android中讀取URL中簡單的json文件maven

任何想法爲什麼它不與restTemplate.getForObject一起工作?

我的代碼:

ServerCaller:

private static final String ipAddress = "192.168.56.1:8080"; 
private RestTemplate restTemplate = new RestTemplate(); 
private String test; 

private List<HttpMessageConverter<?>> messageConverters; 

private static ServerCaller instance = null; 

private ServerCaller(){ 
    messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
    messageConverters.add(new FormHttpMessageConverter()); 
    messageConverters.add(new StringHttpMessageConverter()); 
    messageConverters.add(new MappingJacksonHttpMessageConverter()); 
    restTemplate.setMessageConverters(messageConverters); 
} 

private static void createMessageService(){ 
    if(instance == null){ 
     instance = new ServerCaller(); 
    } 
} 

public static ServerCaller getInstance(){ 
    if(instance == null){ 
     createMessageService(); 
    } 
    return instance; 
} 


public ServerError getTest() { 
     try { 
     test = restTemplate.getForObject("http://" + ipAddress + "/ProjectTeamF-1.0/service/getTest.json", String.class); 

     } catch (ResourceAccessException rae) { 
      return ServerError.ServerNotFound; 
     } catch (HttpServerErrorException hsee) { 
      return ServerError.WrongData; 
     } catch (Exception e) { 
      return ServerError.OtherError; 
     } 
     return ServerError.NoError; 
    } 

public String pakTest(){ 
    return test; 
} 

然後在我的觀點:

serverCaller.getTest(); 
ServerError se = serverCaller.getTest();       

Toast.makeText(getApplicationContext(),serverCaller.pakTest(),Toast.LENGTH_SHORT).show(); 
+0

你會得到什麼錯誤 – cowls 2013-02-27 09:09:14

+0

android.app.ServiceConnectionLeaked:Service com.android.exchange.ExchangeService已經泄露了ServiceConnection [email protected]6ee90,它最初在此綁定。當我運行Emulotar時,它會多次出現此錯誤。但我認爲這不是問題..它只是向我顯示一個空的吐司 – 2013-02-27 09:21:33

+0

服務器返回的MIME類型是什麼? – alex 2013-02-27 09:22:03

回答

1

你必須使用AsyncTasks得到與URL的對象,因爲你可以」在主線程中執行此操作。

+1

謝謝!現在它工作:D – 2013-02-28 13:21:26