【问题标题】:Manage http.get response from java spring method管理来自 java spring 方法的 http.get 响应
【发布时间】:2016-05-05 15:32:58
【问题描述】:

我必须管理来自 java spring get 请求的 http get 响应。 从服务器下载的文件是一个 zip(其中包含一个 .pdf 和 .png)。 这是java代码:

@RequestMapping(value="/data/{meetingId}", method = RequestMethod.GET)
public byte[] getMeetingRest(@PathVariable(value="meetingId") String meetingId) {
    byte[] file = new byte[1024];
    Buffer buf =null;
    try {

        String url = getContentServer()+"/data?username="+getUsername()+"&password="+getPassword()+"&id="+meetingId;
        RestTemplate templ = new RestTemplate();
        file = templ.getForObject(url, byte[].class);

    } catch (Exception e) {
        String msg = "Error retrieving meeting list";
        logger.error(msg, e);
    }
    logger.info("file zip  --> "+file.length);
    return file;
}

这是正常的 http.get:

 appControllers.controller('FolderListController', ['$scope', '$routeParams', '$http', '$timeout', '$q', 'global',
                                                   function($scope, $routeParams, $http, $timeout, $q, global){
    console.log("FolderListController");
    var meetingId = $routeParams.meetingId;

    $http.get(CONTEXT_PATH+"/services/data/"+meetingId, {responseType: 'arraybuffer'})
    .success(function(data){
        console.log(data.length);
        console.log(data);
    })
    .error(function(e){
        console.log("Errore chiamate rest data zip   e = "+e);
    });

    //visualizzo i corretti items.
    for(var i=0;i<global.meetings.length;i++){
        console.log("meetingList["+i+"] = "+global.meetings[i]);
        if(global.meetings[i].id == meetingId){
            console.log("trovato id :  id="+global.meetings[i].id+"  --  meetingId  = "+meetingId);
            $scope.items = global.meetings[i];
            break;
        }
    }
}]);

这是输出:

未定义的 controllers.js:108 ArrayBuffer {}。

有什么建议吗?

谢谢。

【问题讨论】:

  • 不确定错误,但我认为您的弹簧控制器中应该有@ResponseBody,但我看不到..

标签: javascript angularjs spring spring-mvc get


【解决方案1】:

尝试添加@ResponseBody注解或将@Controller注解替换为@RestController。

@Controller
....
@RequestMapping(value="/data/{meetingId}", method = RequestMethod.GET)
public @ResponseBody byte[] getMeetingRest(@PathVariable String meetingId) {
    ...
}

或:

@RestController
...
@GetMapping("/data/{meetingId}")
public byte[] getMeetingRest(@PathVariable String meetingId) {
    ...
}

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 2014-02-12
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多