1

我需要在我的翻译应用程序中实现 robospice 来完成网络部分。我以前使用过异步任务类,它工作正常,但现在我想通过实现 robospice 来改进我的应用程序。我正在尝试执行以下代码,但它不会抛出任何异常,它只是永远不会执行......

@Override
public TranslatedText loadDataFromNetwork() throws Exception {

    String jsonString = getJsonString();
    String headerValue = getHeaderValue(jsonString);

    String text = pair.getWordPairs().getWordFrom();
    String languageFrom = pair.getLanguagePairs().getLanguageFrom().getCode();
    String languageTo = pair.getLanguagePairs().getLangougateTo().getCode();

    String uri = String
            .format("http://api.microsofttranslator.com/v2/Http.svc/Translate?text=%s&from=%s&to=%s&contentType=text/html",
                    URLEncoder.encode(text, "UTF-8"),
                    URLEncoder.encode(languageFrom, "UTF-8"),
                    URLEncoder.encode(languageTo, "UTF-8"));


    HttpHeaders headers = new HttpHeaders();

    headers.set("Authorization", headerValue);

    // Create a new RestTemplate instance
    RestTemplate restTemplate = new RestTemplate();

    // Add the Simple XML message converter
    getRestTemplate().getMessageConverters().add(new SimpleXmlHttpMessageConverter());

    //set the headerValue in the Entity
    org.springframework.http.HttpEntity<?> request = new org.springframework.http.HttpEntity<Object>(headerValue);
    // Make the HTTP GET request, marshaling the response from XML to an
    // EventList
    Log.v("request","Making request!");

    //This line never finish execuitng, doesen't throw exception or anything in logCat
    ResponseEntity<Object> responseEntity = getRestTemplate().exchange(uri, HttpMethod.GET, request, null);
    Log.v("request", responseEntity.getBody().toString());
    Log.d("Load Data From Network", request.getBody().toString());
    return null;
}

它在 log cat 中显示的最后一件事是 Request First!之后就什么都没有了。它甚至从未到达请求侦听器 onRequestFailure。任何 1 都可以告诉我我做错了什么吗?

4

2 回答 2

1

在您的代码中,这对我来说看起来很奇怪:

  • ResponseEntity<Object>并且null作为该exchange方法的第四个参数不正确。您需要提供一个表示您从服务器获得的响应的类型。
  • 返回的对象loadDataFromNetwork()就是您将在onRequestSuccess()方法中获得的对象。在我看来,返回null不是一个好主意。
于 2014-01-14T21:13:03.540 回答
0

我解决了这个问题。因此,如果您需要处理流,则必须提供以下代码

 ResponseEntity<byte[]> responseEntity = getRestTemplate().exchange(uri, HttpMethod.GET, request, byte[]);
于 2014-01-15T22:33:58.717 回答