所以我想使用restTemplate.getForObject从url加载一个简单的JSON文件。 我创建了一个只有一个字符串的简单json文件,但android无法加载它。 但是,当我在我的模拟器浏览器中的url中打字时,浏览器会显示我的json文件
知道为什么它不能使用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 :(得分:1)
您必须使用AsyncTasks来获取带有url的对象,因为您无法在主线程中执行此操作。