java 考勤管理素材_Java微信公众平台开发_06_素材管理

packagecom.ray.weixin.gz.util;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importorg.apache.http.Consts;importorg.apache.http.Header;importorg.apache.http.HeaderElement;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.HttpStatus;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.StringEntity;importorg.apache.http.entity.mime.MultipartEntityBuilder;importorg.apache.http.entity.mime.content.FileBody;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.protocol.BasicHttpContext;importorg.apache.http.util.EntityUtils;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;/*** HTTP请求封装,建议直接使用sdk的API*/

public classHttpHelper {/*** @desc :1.发起GET请求

*

*@paramurl

*@returnJSONObject

*@throwsException*/

public static JSONObject doGet(String url) throwsException {//1.生成一个请求

HttpGet httpGet = newHttpGet(url);//2.配置请求的属性

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();//2000

httpGet.setConfig(requestConfig);//3.发起请求,获取响应信息//3.1 创建httpClient

CloseableHttpClient httpClient =HttpClients.createDefault();

CloseableHttpResponse response= null;try{//3.2 发起请求,获取响应信息

response = httpClient.execute(httpGet, newBasicHttpContext());//如果返回结果的code不等于200,说明出错了

if (response.getStatusLine().getStatusCode() != 200) {

System.out.println("request url failed, http code=" +response.getStatusLine().getStatusCode()+ ", url=" +url);return null;

}//4.解析请求结果

HttpEntity entity = response.getEntity(); //reponse返回的数据在entity中

if (entity != null) {

String resultStr= EntityUtils.toString(entity, "utf-8"); //将数据转化为string格式

System.out.println("GET请求结果:"+resultStr);

JSONObject result= JSON.parseObject(resultStr); //将String转换为 JSONObject

if(result.getInteger("errcode")==null) {returnresult;

}else if (0 == result.getInteger("errcode")) {returnresult;

}else{

System.out.println("request url=" + url + ",return value=");

System.out.println(resultStr);int errCode = result.getInteger("errcode");

String errMsg= result.getString("errmsg");throw new Exception("error code:"+errCode+", error message:"+errMsg);

}

}

}catch(IOException e) {

System.out.println("request url=" + url + ", exception, msg=" +e.getMessage());

e.printStackTrace();

}finally{if (response != null) try{

response.close();//释放资源

}catch(IOException e) {

e.printStackTrace();

}

}return null;

}/**2.发起POST请求

* @desc :

*

*@paramurl 请求url

*@paramdata 请求参数(json)

*@return*@throwsException JSONObject*/

public static JSONObject doPost(String url, Object data) throwsException {//1.生成一个请求

HttpPost httpPost = newHttpPost(url);//2.配置请求属性//2.1 设置请求超时时间

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(100000).setConnectTimeout(100000).build();

httpPost.setConfig(requestConfig);//2.2 设置数据传输格式-json

httpPost.addHeader("Content-Type", "application/json");//2.3 设置请求实体,封装了请求参数

StringEntity requestEntity = new StringEntity(JSON.toJSONString(data), "utf-8");

httpPost.setEntity(requestEntity);//3.发起请求,获取响应信息//3.1 创建httpClient

CloseableHttpClient httpClient =HttpClients.createDefault();

CloseableHttpResponse response= null;try{//3.3 发起请求,获取响应

response = httpClient.execute(httpPost, newBasicHttpContext());if (response.getStatusLine().getStatusCode() != 200) {

System.out.println("request url failed, http code=" +response.getStatusLine().getStatusCode()+ ", url=" +url);return null;

}//获取响应内容

HttpEntity entity =response.getEntity();if (entity != null) {

String resultStr= EntityUtils.toString(entity, "utf-8");

System.out.println("POST请求结果:"+resultStr);//解析响应内容

JSONObject result =JSON.parseObject(resultStr);if(result.getInteger("errcode")==null) {returnresult;

}else if (0 == result.getInteger("errcode")) {returnresult;

}else{

System.out.println("request url=" + url + ",return value=");

System.out.println(resultStr);int errCode = result.getInteger("errcode");

String errMsg= result.getString("errmsg");throw new Exception("error code:"+errCode+", error message:"+errMsg);

}

}

}catch(IOException e) {

System.out.println("request url=" + url + ", exception, msg=" +e.getMessage());

e.printStackTrace();

}finally{if (response != null) try{

response.close();//释放资源

}catch(IOException e) {

e.printStackTrace();

}

}return null;

}/*** @desc : 3.上传文件

*

*@paramurl 请求url

*@paramfile 上传的文件

*@return*@throwsException JSONObject*/

public static JSONObject uploadMedia(String url, File file) throwsException {

HttpPost httpPost= newHttpPost(url);

CloseableHttpResponse response= null;

CloseableHttpClient httpClient=HttpClients.createDefault();

RequestConfig requestConfig= RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();

httpPost.setConfig(requestConfig);//2.3 设置请求实体,封装了请求参数

HttpEntity requestEntity = MultipartEntityBuilder.create().addPart("media",new FileBody(file, ContentType.create("multipart/form-data", Consts.UTF_8), file.getName())).build();//FileEntity requestEntity = new FileEntity(file,ContentType.MULTIPART_FORM_DATA);

httpPost.setEntity(requestEntity);try{

response= httpClient.execute(httpPost, newBasicHttpContext());if (response.getStatusLine().getStatusCode() != 200) {

System.out.println("request url failed, http code=" +response.getStatusLine().getStatusCode()+ ", url=" +url);return null;

}

HttpEntity entity=response.getEntity();if (entity != null) {

String resultStr= EntityUtils.toString(entity, "utf-8");

JSONObject result=JSON.parseObject(resultStr);//上传临时素材成功

if (result.getString("errcode")== null) {//成功//result.remove("errcode");//result.remove("errmsg");

returnresult;

}else{

System.out.println("request url=" + url + ",return value=");

System.out.println(resultStr);int errCode = result.getInteger("errcode");

String errMsg= result.getString("errmsg");throw new Exception("error code:"+errCode+", error message:"+errMsg);

}

}

}catch(IOException e) {

System.out.println("request url=" + url + ", exception, msg=" +e.getMessage());

e.printStackTrace();

}finally{if (response != null) try{

response.close();//释放资源

}catch(IOException e) {

e.printStackTrace();

}

}return null;

}/*** @desc : 上传PDF

* 见微信电子发票章节

* 9. 向用户提供发票或其它消费凭证PDF

*

*@paramurl

*@paramfile

*@return*@throwsException

* JSONObject*/

public static JSONObject uploadPDF(String url, File file) throwsException {

HttpPost httpPost= newHttpPost(url);

CloseableHttpResponse response= null;

CloseableHttpClient httpClient=HttpClients.createDefault();

RequestConfig requestConfig= RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();

httpPost.setConfig(requestConfig);//2.3 设置请求实体,封装了请求参数

HttpEntity requestEntity = MultipartEntityBuilder.create().addPart("media",new FileBody(file, ContentType.create("multipart/form-data", Consts.UTF_8), file.getName())).build();

httpPost.setEntity(requestEntity);try{

response= httpClient.execute(httpPost, newBasicHttpContext());if (response.getStatusLine().getStatusCode() != 200) {

System.out.println("request url failed, http code=" +response.getStatusLine().getStatusCode()+ ", url=" +url);return null;

}

HttpEntity entity=response.getEntity();if (entity != null) {

String resultStr= EntityUtils.toString(entity, "utf-8");

JSONObject result=JSON.parseObject(resultStr);//上传临时素材成功

if (result.getString("errcode")== null) {//成功//result.remove("errcode");//result.remove("errmsg");

returnresult;

}else{

System.out.println("request url=" + url + ",return value=");

System.out.println(resultStr);int errCode = result.getInteger("errcode");

String errMsg= result.getString("errmsg");throw new Exception("error code:"+errCode+", error message:"+errMsg);

}

}

}catch(IOException e) {

System.out.println("request url=" + url + ", exception, msg=" +e.getMessage());

e.printStackTrace();

}finally{if (response != null) try{

response.close();//释放资源

}catch(IOException e) {

e.printStackTrace();

}

}return null;

}/*** @desc : 4.下载文件 -get

*

*@paramurl 请求url

*@paramfileDir 下载路径

*@return*@throwsException File*/

public static File downloadMedia(String url, String fileDir) throwsException {//1.生成一个请求

HttpGet httpGet = newHttpGet(url);//2.配置请求属性

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(100000).setConnectTimeout(100000).build();

httpGet.setConfig(requestConfig);//3.发起请求,获取响应信息//3.1 创建httpClient

CloseableHttpClient httpClient =HttpClients.createDefault();

CloseableHttpResponse response= null;//4.设置本地保存的文件//File file = new File(fileDir);

File file = null;try{//5. 发起请求,获取响应信息

response = httpClient.execute(httpGet, newBasicHttpContext());

System.out.println("HttpStatus.SC_OK:"+HttpStatus.SC_OK);

System.out.println("response.getStatusLine().getStatusCode():"+response.getStatusLine().getStatusCode());

System.out.println("http-header:"+JSON.toJSONString( response.getAllHeaders() ));

System.out.println("http-filename:"+getFileName(response) );//请求成功

if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){//6.取得请求内容

HttpEntity entity =response.getEntity();if (entity != null) {//这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明

System.out.println(entity.getContentType());//可以判断是否是文件数据流

System.out.println(entity.isStreaming());//6.1 输出流//6.1.1获取文件名,拼接文件路径

String fileName=getFileName(response);

fileDir=fileDir+fileName;

file= newFile(fileDir);//6.1.2根据文件路径获取输出流

FileOutputStream output = newFileOutputStream(file);//6.2 输入流:从钉钉服务器返回的文件流,得到网络资源并写入文件

InputStream input =entity.getContent();//6.3 将数据写入文件:将输入流中的数据写入到输出流

byte b[] = new byte[1024];int j = 0;while( (j = input.read(b))!=-1){

output.write(b,0,j);

}

output.flush();

output.close();

}if (entity != null) {

entity.consumeContent();

}

}

}catch(IOException e) {

System.out.println("request url=" + url + ", exception, msg=" +e.getMessage());

e.printStackTrace();

}finally{if (response != null) try{

response.close();//释放资源

}catch(IOException e) {

e.printStackTrace();

}

}returnfile;

}/*** @desc : 5.下载文件 - post

*

*@paramurl 请求url

*@paramdata post请求参数

*@paramfileDir 文件下载路径

*@return*@throwsException File*/

public static File downloadMedia(String url, Object data, String fileDir) throwsException {//1.生成一个请求

HttpPost httpPost = newHttpPost(url);//2.配置请求属性//2.1 设置请求超时时间

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(100000).setConnectTimeout(100000).build();

httpPost.setConfig(requestConfig);//2.2 设置数据传输格式-json

httpPost.addHeader("Content-Type", "application/json");//2.3 设置请求参数

StringEntity requestEntity = new StringEntity(JSON.toJSONString(data), "utf-8");

httpPost.setEntity(requestEntity);//3.发起请求,获取响应信息//3.1 创建httpClient

CloseableHttpClient httpClient =HttpClients.createDefault();

CloseableHttpResponse response= null;//4.设置本地保存的文件//File file = new File(fileDir);

File file = null;try{//5. 发起请求,获取响应信息

response = httpClient.execute(httpPost, newBasicHttpContext());

System.out.println("HttpStatus.SC_OK:"+HttpStatus.SC_OK);

System.out.println("response.getStatusLine().getStatusCode():"+response.getStatusLine().getStatusCode());

System.out.println("http-header:"+JSON.toJSONString( response.getAllHeaders() ));

System.out.println("http-filename:"+getFileName(response) );//请求成功

if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){//6.取得请求内容

HttpEntity entity =response.getEntity();if (entity != null) {//这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明

System.out.println(entity.getContentType());//可以判断是否是文件数据流

System.out.println(entity.isStreaming());//6.1 输出流//6.1.1获取文件名,拼接文件路径

String fileName=getFileName(response);

fileDir=fileDir+fileName;

file= newFile(fileDir);//6.1.2根据文件路径获取输出流

FileOutputStream output = newFileOutputStream(file);//6.2 输入流:从钉钉服务器返回的文件流,得到网络资源并写入文件

InputStream input =entity.getContent();//6.3 将数据写入文件:将输入流中的数据写入到输出流

byte b[] = new byte[1024];int j = 0;while( (j = input.read(b))!=-1){

output.write(b,0,j);

}

output.flush();

output.close();

}if (entity != null) {

entity.consumeContent();

}

}

}catch(IOException e) {

System.out.println("request url=" + url + ", exception, msg=" +e.getMessage());

e.printStackTrace();

}finally{if (response != null) try{

response.close();//释放资源

}catch(IOException e) {

e.printStackTrace();

}

}returnfile;

}/**5. 获取response header中Content-Disposition中的filename值

* @desc :

*

*@paramresponse 响应

*@returnString*/

public staticString getFileName(HttpResponse response) {

Header contentHeader= response.getFirstHeader("Content-Disposition");

String filename= null;if (contentHeader != null) {

HeaderElement[] values=contentHeader.getElements();if (values.length == 1) {

NameValuePair param= values[0].getParameterByName("filename");if (param != null) {try{//filename = new String(param.getValue().toString().getBytes(), "utf-8");//filename=URLDecoder.decode(param.getValue(),"utf-8");

filename =param.getValue();

}catch(Exception e) {

e.printStackTrace();

}

}

}

}returnfilename;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值