美文网首页
2018-07-20

2018-07-20

作者: 晴天M雨天 | 来源:发表于2018-07-20 09:52 被阅读0次

java httpclient 模拟表单发送数据
@ApiOperation(value = "上传文件", notes = "上传文件test")
@RequestMapping(value = "register", method = RequestMethod.POST,produces = "application/json;charset=utf-8")
@ResponseBody
public String register( HttpServletRequest request,
@ApiParam(value = "storephoto", required = true)@RequestParam(value="storephoto",required=false) MultipartFile storephoto,
@RequestParam String agentName,
@RequestParam String taxNumber,
@RequestParam String uId,
@RequestParam String cellPhone,
@RequestParam String payAccount,
@RequestParam String contacts,
@RequestParam String province,
@RequestParam String city,
@RequestParam String district,
@RequestParam String address,
@RequestParam String storeName,
@RequestParam String customerId
) throws IOException {

       HttpClient httpclient = null;
        HttpResponse response = null;
        MultipartEntityBuilder entityBuilder =  MultipartEntityBuilder.create();
String url="http://118.122.120.53:30084/v1/register/add";
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    MultipartFile file = storephoto; // 通过参数名获取指定文件
    if(file==null){
    return "请上传文件";
    }
     File f = null; //转化成实体file
     try {
            f=File.createTempFile("tmp", null);
            file.transferTo(f);f.deleteOnExit();        
        } catch (IOException e) {
            e.printStackTrace();
        }
     //签名
     Map<String, String> parameterMap=new HashMap<>();
        String sign = "";
        DZSignUtils md5 = new DZSignUtils();
            Enumeration paramNames = request.getParameterNames();
            while (paramNames.hasMoreElements()) {
                String paramName = (String) paramNames.nextElement();
                String[] paramValues = request.getParameterValues(paramName);
                if (paramValues.length == 1) {
                    String paramValue = paramValues[0];
                    if (paramValue.length() != 0) {
                        parameterMap.put(paramName, paramValue);
                    }
                }
            }

        String linkFileName = md5.linkFileName(parameterMap);
        System.out.println(md5.filterParameter(parameterMap));
        System.out.println("-----------加密后");
        sign = md5.sign2(parameterMap);
        parameterMap.put("sign", sign);
        try{
            httpclient = new DefaultHttpClient();// 看作是浏览器
             HttpPost httppost = new HttpPost(url);
             FileBody fileBody = new FileBody(f);
             entityBuilder.addPart("storephoto", fileBody);
            
            // 字符串参数
                if(parameterMap!=null&&!parameterMap.isEmpty()){
                    for(String key : parameterMap.keySet()){
                        StringBody stringBody = new StringBody(parameterMap.get(key), ContentType.create("text/plain", "UTF-8"));
                        // <input type="text" name="userName" value="userName">
                        entityBuilder.addPart(key, stringBody);
                    }
                }
                HttpEntity httpEntity = entityBuilder.build();
            httppost.setEntity(httpEntity);
            CloseableHttpResponse httpResponse = (CloseableHttpResponse) httpclient.execute(httppost);
        
            int responseCode = httpResponse.getStatusLine().getStatusCode();
            System.out.println("【状态码:"+responseCode+"】");
            InputStream in = httpResponse.getEntity().getContent();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in,"utf-8"));
            StringBuffer sb = new StringBuffer();
            String readLine = null;
            while((readLine=bufferedReader.readLine())!=null){
                sb.append(readLine);
            }
            System.out.println("返回报文:"+sb.toString());
              in.close();
              bufferedReader.close();
            return sb.toString();
           
             
        } catch(Exception e){
            e.printStackTrace();
        }
        return null;
}

相关文章

网友评论

      本文标题:2018-07-20

      本文链接:https://www.haomeiwen.com/subject/vsrfmftx.html