0

そこで、restTemplate.getForObjectを使用してURLから単純なJSONファイルをロードしたいと思います。文字列が1つだけの単純な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();
4

1 に答える 1

1

メインスレッドではこれを行うことができないため、AsyncTasks を使用して URL を持つオブジェクトを取得する必要があります。

于 2013-02-28T13:12:12.400 に答える