我只是试图将robospice框架https://github.com/octo-online/robospice集成到我的android应用程序中。我没有使用maven,所以我按照线程https://github.com/octo-online/robospice/issues/17中建议的步骤以“非maven”样式运行它
我在其中包含生成int步骤的库并将其包含在我的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 ist。
有人知道这个问题可能来自哪里吗?也许有人有解决方案,或者知道哪个版本的框架可以正常工作,因为github站点上只有一个简短的教程,似乎已经过时了。
我感谢任何帮助。
麦克
更新
这是我的服务:
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;
}
该请求与tweet示例中的请求相同:
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;
}
最佳答案
当您使用SpringAndroidSpiceService或其任何子类时,则应使用SpringAndroidSpiceRequest。这些请求在执行时将从服务中接收Spring Android rest模板。
关于android - Robospice:找不到CachedSpiceReques.getSpiceRequest,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14160844/