标签: spring-android

Android Gradle在APK META-INF/license.txt中复制的重复文件

我将在我的Android应用程序中添加Spring的RESTful Web Service支持,如https://spring.io/guides/gs/consuming-rest-android/所述.

这是顶级的build.gradle配置:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的app/build.gradle配置:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example"
        minSdkVersion 8
        targetSdkVersion 17
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    dependencies {
        compile 'com.android.support:appcompat-v7:+'
        compile fileTree(dir: 'libs', include: ['*.jar']) …
Run Code Online (Sandbox Code Playgroud)

android gradle spring-android

75
推荐指数
3
解决办法
6万
查看次数

带有参数的Spring RestTemplate HTTP Post导致400错误的请求错误

可能重复需要有关身体参数的RestTemplate Post Request的帮助吗?Spring REST模板POST但这些答案对我不起作用
我试图Instagram通过Spring Android 从API 获取访问令牌.来自Instagram文档的请求如下:

curl \-F 'client_id=CLIENT-ID' \
-F 'client_secret=CLIENT-SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=YOUR-REDIRECT-URI' \
-F 'code=CODE' \https://api.instagram.com/oauth/access_token
Run Code Online (Sandbox Code Playgroud)

这是我的请求访问令牌(在我获得请求令牌成功后):

 MultiValueMap<String, String> mvm = new LinkedMultiValueMap<String, String>();
    mvm.add("client_id", INSTAGRAM_CILENT_ID);
    mvm.add("client_secret", INSTAGRAM_SECRET);
    mvm.add("grant_type", "authorization_code");
    mvm.add("redirect_uri", CALLBACKURL);
    mvm.add("code", requestToken);

    InstagramResult result = restTemplate .postForObject("https://api.instagram.com/oauth/access_token", mvm, InstagramResult .class);
Run Code Online (Sandbox Code Playgroud)

结果映射类:

public class InstagramLogin {
   public String access_token;
   public InstagramUser user;
}

public class InstagramUser {
   public String id;
   public String username; …
Run Code Online (Sandbox Code Playgroud)

java spring android spring-android

21
推荐指数
1
解决办法
8万
查看次数

java.lang.IllegalArgumentException:索引0中的方案中的非法字符:localhost

我正在开发一个从服务器(localhost - mssql和nodejs)接收数据的Android应用程序,保存数据然后显示它

收到服务器响应后,我收到此错误

我按照下面的说明在这里输入链接描述而不是我使用localhost的Web服务器.谢谢

 Illegal character in scheme at index 0: 192.168.2.7:3000
    java.net.URISyntaxException: Illegal character in scheme at index 0: 192.168.2.7:3000
            at java.net.URI.validateScheme(URI.java:419)
            at java.net.URI.parseURI(URI.java:363)
            at java.net.URI.<init>(URI.java:204)
            at cz.uhk.fim.jedlima3.searchrooms.asyncTask.DownloadDatabaseAsync.doInBackground(DownloadDatabaseAsync.java:30)
            at cz.uhk.fim.jedlima3.searchrooms.asyncTask.DownloadDatabaseAsync.doInBackground(DownloadDatabaseAsync.java:15)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:864)
Run Code Online (Sandbox Code Playgroud)

java localhost spring-android

10
推荐指数
1
解决办法
2万
查看次数

如何使用STS,Android SDK,Maven和Spring Android设置Android开发环境

  1. 安装最新的STS(目前为3.4.0)
  2. 根据现有IDE的常规Android开发设置步骤,在STS中设置Android开发环境:http://developer.android.com/sdk/installing/index.html
  3. 对于上面的步骤,您可以通过从已经设置其环境的另一个开发人员复制"android-sdk"文件夹来节省时间,并将您的STS指向该android文件夹(Window - > Preferences - > Android - > SDK地点)
  4. 按照以下方式安装m2e-android:http://rgladwell.github.io/m2e-android/

使用Maven创建示例Android应用程序

  1. 在STS中,单击文件 - >新建 - > Maven项目
  2. 选择工作区位置并单击"下一步"
  3. 对于Maven Archetype,选择"android-quickstart"并单击"下一步".如果您根据以下内容添加了Archetype,则应该存在此原型:http://rgladwell.github.io/m2e-android/
  4. 填写所需的Maven项目详细信息,然后单击"下一步".
  5. 在pom.xml中,将"platform.version"标记值设置为4.1.1.4
  6. 右键单击该项目,然后选择Build Project.
  7. 右键单击该项目,然后选择RunAsAndroidApplication.
  8. 它应该启动你的Android模拟器并部署'Hello World'应用程序.

在Android应用程序中使用Spring Android库:

  1. 在我们使用Maven时,请按照此处的说明配置您的依赖项:http://projects.spring.io/spring-android
  2. 使用上述依赖项似乎有一个错误.尝试在STS中运行Android应用程序时出现错误,它说"多个dex文件定义Lorg/springframework/core/ErrorCoded".这意味着在类路径上引用了重复的类.要避免此错误,请删除maven依赖元素"spring-android-auth".

使用Spring Android库中的RestTemplate:

  1. 参考文档为您提供所需的一切:http://docs.spring.io/spring-android/docs/1.0.1.RELEASE/reference/html/rest-template.html
  2. 请记住,您的Android应用程序必须注册正确的邮件转换器.例如:restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
  3. 请注意,您的Android应用程序必须包含uses-permission"android.permission.INTERNET"才能允许网络调用.

android maven resttemplate spring-android

9
推荐指数
0
解决办法
5298
查看次数

Joda Time/Jackson 2/Spring的反序列化问题 - 无法实例化类型[simple type,class org.joda.time.DateTime]的值

尝试使用Joda将包含日期字符串的JSON字符串反序列化到POJO时,我遇到异常.

我正在使用带有Spring和Robospice的Jackson2.

我收到以下异常:

无法读取JSON:无法从字符串值('2014-07-25T00:00:00')实例化类型[simple type,class org.joda.time.DateTime]的值.没有单字符串构造函数/工厂方法

这是我目前的代码:

MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter 
                            = new MappingJackson2HttpMessageConverter();

mappingJackson2HttpMessageConverter.getObjectMapper().registerModule(new JodaModule());
msgConverters.add(mappingJackson2HttpMessageConverter);

restTemplate.setMessageConverters(msgConverters);
HttpEntity<?> httpEntity = new HttpEntity<Object>(headers);

final ResponseEntity<HolidayList> responseEntity 
            = restTemplate.exchange(url, HttpMethod.GET, httpEntity,HolidayList.class);
Run Code Online (Sandbox Code Playgroud)

POJO字段的定义如下:

private DateTime departureDate;
Run Code Online (Sandbox Code Playgroud)

我在Jackson1工作过......但似乎无法让它在Jackson2工作.

jodatime jackson spring-android

9
推荐指数
2
解决办法
1万
查看次数

Spring Android Vs Retrofit

我最近一直在挖掘Android的REST客户端.大多数讨论都围绕着Volley和Retrofit,我很少遇到Ion,Robospice与这两者之间的比较.我找不到与Spring Android的任何比较,即使它似乎是一个来自知名的开源框架的可靠的Rest Client.

Spring Android很少用作Rest客户端吗?它是否与上面提到的Rest客户端不能很好地叠加?

PS - 在我上面提到的库中,看起来Robospice在将请求绑定到Activity生命周期时是否可靠?我想知道Ion,Volley和其他图书馆是否会这样做?

android android-ion robospice retrofit spring-android

8
推荐指数
0
解决办法
6484
查看次数

通过RestTemplate发送multipart文件

我通过Spring restTemplate使用android发送图像文件(multipart)有一些问题.

这是我服务器上的控制器:

@RequestMapping(value = "/uploadPhoto/{id}", method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity<String> uploadPhoto(@RequestParam("file") MultipartFile srcFile,
                                               @PathVariable("id") Integer id) {

///  do something

        return RestUtil.getJsonSHttptatus(HttpStatus.NOT_ACCEPTABLE);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的Android活动中的休息请求

private void doUpload(){

        new AsyncTask<String, Void, String>() {

            @Override
            protected String doInBackground(String... params) {

                FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
                formHttpMessageConverter.setCharset(Charset.forName("UTF8"));


                RestTemplate restTemplate = new RestTemplate();


                restTemplate.getMessageConverters().add( formHttpMessageConverter );
                restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


                restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());

                String uri = "http://localhost:8089/web/uploadPhoto/1";

                String imagePath = "/mnt/sdcard/DCIM/Camera/IMG_20140406_130350.jpg";

                MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
                map.add("expenseId", 1);
                map.add("file", new FileSystemResource(path));

                HttpHeaders imageHeaders …
Run Code Online (Sandbox Code Playgroud)

rest spring android resttemplate spring-android

7
推荐指数
1
解决办法
7528
查看次数

使用自定义表单键将POJO映射到application/x-www-form-urlencoded

我正在使用RoboSpice和Spring Android来执行REST api调用.需要将Content-Type设置为application/x-www-form-urlencoded发送数据.

假设我有一个像这样的Pojo类:

public class Pojo {
  private String pojoAttribute;

  // getter + setter
}
Run Code Online (Sandbox Code Playgroud)

这是我的请求类:

public class PojoRequest extends AbstractApiRequest<PojoResult> {

    private Pojo pojo;

    public PojoRequest(Pojo pojo) {
        super(PojoResult.class);
        this.pojo = pojo;
    }

    @Override
    public PojoResult loadDataFromNetwork() throws Exception {

        HttpEntity<Pojo> requestEntity = new HttpEntity<Pojo>(pojo, getDefaultHeaders());
        String url = buildUrlForPath("mypath");

        RestTemplate restTemplate = getRestTemplate();
        restTemplate.getMessageConverters().add(new FormHttpMessageConverter());

        return restTemplate.postForObject(url, requestEntity, PojoResult.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,假设我需要发送这个主体:
pojo_attribute = foo

现在我的代码不起作用,因为FormHttpMessageConverter不处理POJO.

我希望能做的是这样的:

public class Pojo {
  @FormProperty("pojo_attribute")
  private String pojoAttribute;

  // getter …
Run Code Online (Sandbox Code Playgroud)

java mapping robospice spring-android

6
推荐指数
0
解决办法
1369
查看次数

将Android依赖项添加到gradle + Android studio项目中

官方Spring for Android页面提到添加以下依赖项代码.

dependencies {
    compile 'org.springframework.android:spring-android:1.0.1.RELEASE'
}
Run Code Online (Sandbox Code Playgroud)

这是最新版本的build.(根据网站)
我在应用程序的build.gradle中添加了它但是我得到一个错误

Error:Failed to find: org.springframework.android:spring-android:1.0.1.RELEASE
Run Code Online (Sandbox Code Playgroud)

做正确的方法是什么?我可以用同样的方式添加谷歌播放服务作为依赖.

spring android gradle android-studio spring-android

6
推荐指数
1
解决办法
7844
查看次数

AndroidTest从命令行运行时失败:app:connectedDebugAndroidTest

我正在使用android spring RestTemplate在我的应用程序上进行REST服务调用.我添加了android Instrumentation测试,其中包括模拟REST服务调用.从android studio运行时,我的所有测试运行正常,但测试无法在终端使用时加载spring mock类

   ./gradlew clean :app:connectedDebugAndroidTest
Run Code Online (Sandbox Code Playgroud)

spring.gradle上的spring测试依赖项

    androidTestCompile("org.springframework:spring-test:3.2.8.RELEASE")
Run Code Online (Sandbox Code Playgroud)

如果我改为compile而不是androidTestCompile,Android测试从终端正常运行.由于我不希望这种依赖我的生产APK任何帮助,赞赏.

这是开始测试时的日志

08-05 00:04:12.585 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.asm.commons.JSRInlinerAdapter 08-05 00:04:12.587 22274-22302/com.libin .androiduitesting E/TestLoader:找不到类:org.springframework.asm.commons.TryCatchBlockSorter 08-05 00:04:12.593 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework. cglib.transform.AbstractProcessTask 08-05 00:04:12.593 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.cglib.transform.AbstractTransformTask 08-05 00:04:12.603 22274- 22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.core.convert.support.ConvertingPropertyEditorAdapter 08-05 00:04:12.610 22274-22302/com.libin.androiduitesting E/TestLoader:无法find class:org.springframework.core.io.ResourceEditor 08-05 00:04:12.611 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.spring framework.core.io.support.ResourceArrayPropertyEditor 08-05 00:04:12.617 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http.MockHttpInputMessage 08-05 00:04 :12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http.MockHttpOutputMessage 08-05 00:04:12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http.client.MockClientHttpRequest 08-05 00:04:12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.http. client.MockClientHttpResponse 08-05 00:04:12.618 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.jndi.ExpectedLookupTemplate 08-05 00:04:12.619 22274-22302/com.libin.androiduitesting E/TestLoader:找不到类:org.springframework.mock.jndi.SimpleNamingContext 08-05 00:04:12.619 22274-22302/com.libin.androiduitesting …

android spring-test android-espresso spring-android android-instrumentation

5
推荐指数
1
解决办法
1084
查看次数