小编Roy*_*son的帖子

通过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
查看次数

Android Spring RestTemplate与代理

我需要从手机上读取代理信息,如果手机在代理下,我需要在我的spring restTemplate对象上设置这个代理.我尝试了以下代码没有任何运气,任何人都可以告诉我我在做什么错误.

String proxyHost = android.net.Proxy.getHost(activity
            .getApplicationContext());

SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, 8080));
requestFactory.setProxy(proxy);
RestTemplate rest = new RestTemplate(requestFactory);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

proxy spring android spring-android

4
推荐指数
1
解决办法
4197
查看次数

服务器重新启动时的restTemplate ResourceAccessException

我在我的android应用程序上使用restTemplate(来自spring android框架)通过post联系rest服务器,我使用AsyncTask发送请求和两个类Request和Response,它们是POJO以Json形式发送。

public class RequestSender extends AsyncTask<Object, Void, Response> {
    private RestTemplate restTemplate = new RestTemplate();
    private static final String SERVER_REQUEST_PATH = "/path/to/rest/service";

    @Override
    protected Response doInBackground(Object... args) {
        String url = (String) args[0] + SERVER_REQUEST_PATH;
        Request requestArgs = (Request) args[1];
            Response response = null;

        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
        try {
               response = restTemplate.postForObject(url, requestArgs, Response.class);
        } catch (RestClientException e) {
            e.printStackTrace();
            response = null;
        }
        return response;
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,代码非常简单,并且大部分时间都可以正常工作,但不是按特定顺序运行的:

  1. 我向服务器发出第一个(或更多)请求;
  2. 我在没有重启应用的情况下重启了服务器;
  3. 我向服务器发出新请求;

然后服务器重启后的第一个请求(第 3 步)不是通过 postForObject(...) 方法发送到服务器的,而是接下来的请求。第一个请求给我一个错误:

07-10 10:24:13.402: W/System.err(4827): …
Run Code Online (Sandbox Code Playgroud)

android resttemplate spring-android

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

标签 统计

android ×3

spring-android ×3

resttemplate ×2

spring ×2

proxy ×1

rest ×1