zoukankan      html  css  js  c++  java
  • Rest Post示例(java服务端、python客户端)

      前提:服务端是现成的,java、springMVC、resttemplate、jboss等;突然有个需要,要在windows上开发一个客户端,作用是定期向服务端上传文件。想了想,如果客户端写一个java程序,势必要求在windows上安装java的运行环境,这样比较麻烦。后来的解决思路是写python的程序,然后打包成exe在windows上执行。以下是Rest Post示例的服务端、客户端代码。

    server端代码:

    @RequestMapping(value = "/uploadScriptResult")
        public @ResponseBody OperateResult uploadScriptResult(MultipartFile files){
            //public @ResponseBody OperateResult uploadScriptResult(@RequestParam(value="files",required=false) MultipartFile files){
            OperateResult result = new OperateResult();
            try {
                log.info("uploadScriptResult start. ");
                result = uploadFile(files);
            } catch (Exception e) {
                log.error("uploadScriptResult error", e);
                result.setStatus(false);
                result.setMsg(e.getMessage());
            }
            return result;
        }
        
        private OperateResult uploadFile(MultipartFile file) {
            OperateResult result = new OperateResult();
            log.info("upload file start");
            String basePath = ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/") + Constants.REMOTE_SCRIPT_TEST_DIR + "execresult/" + getDate() + "/";
            File uploadPath =new File(basePath);    
            if(!uploadPath.exists())
                {       
                uploadPath.mkdir();    
            }
            String name = file.getOriginalFilename();
            name = name + "." + System.currentTimeMillis() + ".execresult.txt";
            String resourceURL = basePath + name;
            try {
                file.transferTo(new File(resourceURL));
                log.info("transfer file To: " + resourceURL + "success!");
                result.setMsg(name);
            } catch (Exception e1) {
                log.error("upload file error! resourceURL=" + resourceURL, e1);
                String msg = "upload file error resourceURL=" + resourceURL + " OriginalFilename: " + file.getOriginalFilename();
                result.setStatus(false);
                result.setMsg(msg);
            }
            return result;
        }
        
       private String getDate(){
            Date d = new Date();  
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");  
            String dateNowStr = sdf.format(d);
            return dateNowStr;
        }
    
    
    public class OperateResult {
        private Boolean status;
        private String msg;
        public OperateResult(){
            this.status = true;
            this.msg = "";
        }
        public Boolean getStatus() {
            return status;
        }
        public void setStatus(Boolean status) {
            this.status = status;
        }
        public String getMsg() {
            return msg;
        }
        public void setMsg(String msg) {
            this.msg = msg;
        }
    }

    client端代码:

    import urllib
    import urllib2
    import requests
    from poster.encode import multipart_encode
    from urllib2 import Request, urlopen, URLError, HTTPError
    from poster.encode import multipart_encode
    from poster.streaminghttp import register_openers
    
    def uploadFile(filePath, url):
        register_openers()
        datagen, headers = multipart_encode({"files": open(filePath, "rb")})
        request = urllib2.Request(url, datagen, headers)
        response = urllib2.urlopen(request)
        print response.read()
    
    if __name__ == "__main__":
        uploadFile("/home/testResult", "http://192.168.7.144:8888/starott_cloud_client/remotescripttest/uploadScriptResult");
  • 相关阅读:
    hdu acm 2844 Coins 解题报告
    hdu 1963 Investment 解题报告
    codeforces 454B. Little Pony and Sort by Shift 解题报告
    广大暑假训练1 E题 Paid Roads(poj 3411) 解题报告
    hdu acm 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
    hdu acm 1114 Piggy-Bank 解题报告
    poj 2531 Network Saboteur 解题报告
    数据库范式
    ngnix 配置CI框架 与 CI的简单使用
    Vundle的安装
  • 原文地址:https://www.cnblogs.com/zhenyuyaodidiao/p/6112699.html
Copyright © 2011-2022 走看看