1

翻訳アプリでネットワーキングの部分を実行するために、robospice を実装する必要があります。以前は async タスク クラスを使用していて問題なく動作していましたが、今は 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 です!! その後は何もありません。Request Listener onRequestFailure に到達することさえありません。私が間違っていることを教えてもらえますか?

4

2 に答える 2

1

これはあなたのコードで私には奇妙に見えるものです:

  • ResponseEntity<Object>メソッドのnull4 番目のパラメーターが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 に答える