httpclient上传文件
2015-08-12 17:45
501 查看
MobileTokenCloudClient.java
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.ndkey.im.product.mobiletoken; import com.fasterxml.jackson.databind.ObjectMapper; import com.ndkey.security.SymmetricTicket; import com.ndkey.web.ResponseData; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.impl.client.CloseableHttpClient; import org.springframework.web.multipart.MultipartFile; /** * * @author zxf */ public class MobileTokenCloudClient { private final String BASE_URL = "http://mtc.ndkey.com/mtc/rest/app/1"; private final static ObjectMapper _objectMapper = new ObjectMapper(); private MobileTokenCloudSecurityService mobileTokenCloudSecurityService; public MobileTokenCloudClient() { } public ResponseData uploadLogo(String serviceId, MultipartFile file) throws IOException { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(BASE_URL + "/logo/update"); SymmetricTicket ticket = mobileTokenCloudSecurityService.generateTicket(); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); File sigleFile = new File(file.getOriginalFilename()); FileUtils.copyInputStreamToFile(file.getInputStream(), sigleFile); builder.addTextBody("serviceId", serviceId); builder.addPart("file", new FileBody(sigleFile)); builder.addTextBody("signature", ticket.getSignature()); builder.addTextBody("timestamp", Long.toString(ticket.getTimestamp())); builder.addTextBody("nonce", ticket.getNonce()); HttpEntity httpEntity = builder.build(); httpPost.setEntity(httpEntity); HttpResponse response = httpClient.execute(httpPost); return _objectMapper.readValue(response.getEntity().getContent(), ResponseData.class); } catch (Exception e) { return ResponseData.errorData(e.getLocalizedMessage()); } } public ResponseData uploadApp(String platform, String version, MultipartFile file) throws IOException { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(BASE_URL + "/update"); SymmetricTicket ticket = mobileTokenCloudSecurityService.generateTicket(); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); File sigleFile = new File(file.getOriginalFilename()); FileUtils.copyInputStreamToFile(file.getInputStream(), sigleFile); builder.addTextBody("platform", platform); builder.addTextBody("version", version); builder.addPart("file", new FileBody(sigleFile)); builder.addTextBody("signature", ticket.getSignature()); builder.addTextBody("timestamp", Long.toString(ticket.getTimestamp())); builder.addTextBody("nonce", ticket.getNonce()); HttpEntity httpEntity = builder.build(); httpPost.setEntity(httpEntity); HttpResponse response = httpClient.execute(httpPost); return _objectMapper.readValue(response.getEntity().getContent(), ResponseData.class); } catch (Exception e) { return ResponseData.errorData(e.getLocalizedMessage()); } } public void setMobileTokenCloudSecurityService(MobileTokenCloudSecurityService mobileTokenCloudSecurityService) { this.mobileTokenCloudSecurityService = mobileTokenCloudSecurityService; } }
相关文章推荐
- Qt中QTcpServer多线程误区
- Http下载图片
- HTTP协议--状态码
- Socket编程UDP/TCP
- java TCP/UDP编程
- 深度学习(卷积神经网络)一些问题总结
- spring基础:Http请求报文
- 利用xp_cmdshell 导出文件到本地和网络路径。
- linux 网络配置 修改DNS 重启被覆盖
- nginxhttp://www.nginx.cn/2181.html
- 学习JAVA不可不知的一些网络资源
- iOS项目开发实战——通过Http Post方式与服务器通信
- poj 1273 Drainage Ditches(网络流模版题)
- TCP/IP传输层,你懂多少?
- Java基础11——网络编程
- UNIX网络编程1 理解同步、阻塞、非阻塞、异步网络I/O
- Linux系统排查4——网络篇
- IBM HTTP Server https configuration
- http状态码详解
- 学习python自动化运维之输入IP或网段,返回网络.掩码等信息