1

robospiceフレームワークhttps://github.com/octo-online/robospiceをAndroidアプリに統合しようとしました。私はMavenを使用していないので、このスレッドhttps://github.com/octo-online/robospice/issues/17で提案されている手順に従って、生成されたライブラリを手順に含めた「非Maven」スタイルで実行しました。そしてそれを私のAndroidプロジェクトに含めました:robospice-1.3.2-SNAPSHOT.jarなど

すべてが正常に機能しているように見えましたが、REST呼び出しが送信された後、クラッシュしてクラッシュします。

01-04 16:42:43.164: E/AndroidRuntime(2369): FATAL EXCEPTION: Thread-8
01-04 16:42:43.164: E/AndroidRuntime(2369): java.lang.NoSuchMethodError:com.octo.android.robospice.request.CachedSpiceRequest.getSpiceRequest
01-04 16:42:43.164: E/AndroidRuntime(2369):     at com.octo.android.robospice.SpringAndroidSpiceService.addRequest(SpringAndroidSpiceService.java:35)
01-04 16:42:43.164: E/AndroidRuntime(2369):     at com.octo.android.robospice.SpiceManager.run(SpiceManager.java:179)
01-04 16:42:43.164: E/AndroidRuntime(2369):     at java.lang.Thread.run(Thread.java:1096)

したがって、適切なフレームワークファイルがないため、CachedSpiceRequest.getSpiceRequestが欠落しているように見えます。

この問題がどこから来るのか誰か知っていますか?githubサイトには古くなっているように見える短いチュートリアルしかないため、誰かが解決策を持っているか、フレームワークのどのバージョンが問題なく機能するかを知っているかもしれません。

私はどんな助けにも感謝します。

brマイク

これ は私のサービスです。

public class TractiveJSONSpiceService extends JacksonSpringAndroidSpiceService {
 /** Timeout when calling a web service (in ms). */
private static final int WEBSERVICES_TIMEOUT = 30000;

@Override
public RestTemplate createRestTemplate() {
    RestTemplate restTemplate = super.createRestTemplate();

    HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
    httpRequestFactory.setReadTimeout( WEBSERVICES_TIMEOUT );
    httpRequestFactory.setConnectTimeout( WEBSERVICES_TIMEOUT );
    restTemplate.setRequestFactory( httpRequestFactory );

    return restTemplate;
}

リクエストはツイートの例と同じです。

public class TweetsRequest extends SpringAndroidSpiceRequest< ListTweets > {

private String keyword;

public TweetsRequest( String keyword ) {
    super( ListTweets.class );
    this.keyword = keyword;
}

@Override
public ListTweets loadDataFromNetwork() throws Exception {

    // With Uri.Builder class we can build our url is a safe manner
    Uri.Builder uriBuilder = Uri.parse( "http://search.twitter.com/search.json" ).buildUpon();
    uriBuilder.appendQueryParameter( "q", keyword );
    uriBuilder.appendQueryParameter( "rpp", "100" );
    uriBuilder.appendQueryParameter( "lang", "en" );

    String url = uriBuilder.build().toString();

    return getRestTemplate().getForObject( url, ListTweets.class );
}

/**
 * This method generates a unique cache key for this request. In this case our cache key depends just on the
 * keyword.
 * 
 * @return
 */
public String createCacheKey() {
    return "tweets." + keyword;
}
4

1 に答える 1

1

SpringAndroidSpiceServiceまたはそのサブクラスを使用する場合は、SpringAndroidSpiceRequestを使用する必要があります。これらのリクエストは、実行時にサービスからSpringAndroidのRESTテンプレートを受け取ります。

于 2013-01-07T07:06:04.733 に答える