2013-02-27 69 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