| @@ -11,8 +11,8 @@ public enum EnumVideoType { | |||||
| // 1:竖版 | // 1:竖版 | ||||
| // 2:横版 | // 2:横版 | ||||
| VERTICAL_PLATE(1, "竖版"), | |||||
| HORIZONTAL_PLATE(2, "横版"), | |||||
| VERTICAL_PLATE(1, "竖版", "vertical"), | |||||
| HORIZONTAL_PLATE(2, "横版", "horizontal"), | |||||
| ; | ; | ||||
| public static EnumVideoType getEnum(Integer code) { | public static EnumVideoType getEnum(Integer code) { | ||||
| @@ -34,10 +34,21 @@ public enum EnumVideoType { | |||||
| private Integer code; | private Integer code; | ||||
| private String message; | private String message; | ||||
| private String type; | |||||
| EnumVideoType(Integer code, String message) { | |||||
| public String getType() { | |||||
| return type; | |||||
| } | |||||
| public void setType(String type) { | |||||
| this.type = type; | |||||
| } | |||||
| EnumVideoType(Integer code, String message, String type) { | |||||
| this.code = code; | this.code = code; | ||||
| this.message = message; | this.message = message; | ||||
| this.type = type; | |||||
| } | } | ||||
| public Integer getCode() { | public Integer getCode() { | ||||
| @@ -11,17 +11,16 @@ import com.iformall.domain.po.sm.MaterialMould; | |||||
| import com.iformall.domain.po.sm.PersonMould; | import com.iformall.domain.po.sm.PersonMould; | ||||
| import com.iformall.domain.po.sm.UserMouldVideo; | import com.iformall.domain.po.sm.UserMouldVideo; | ||||
| import com.iformall.domain.po.sm.VoiceMould; | import com.iformall.domain.po.sm.VoiceMould; | ||||
| import com.iformall.enums.EnumMouldPatchType; | |||||
| import com.iformall.enums.EnumVideoStatus; | |||||
| import com.iformall.enums.EnumVideoType; | |||||
| import com.iformall.enums.EnumVoiceType; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.mapper.UserMouldVideoMapper; | import com.iformall.mapper.UserMouldVideoMapper; | ||||
| import com.iformall.service.sm.MaterialMouldService; | import com.iformall.service.sm.MaterialMouldService; | ||||
| import com.iformall.service.sm.PersonMouldService; | import com.iformall.service.sm.PersonMouldService; | ||||
| import com.iformall.service.sm.UserMouldVideoService; | import com.iformall.service.sm.UserMouldVideoService; | ||||
| import com.iformall.service.sm.VoiceMouldService; | import com.iformall.service.sm.VoiceMouldService; | ||||
| import com.iformall.sm.AiVideoHelper; | import com.iformall.sm.AiVideoHelper; | ||||
| import com.iformall.sm.AiVideoParam; | |||||
| import com.iformall.sm.AiVideoResult; | import com.iformall.sm.AiVideoResult; | ||||
| import com.iformall.utils.Base64Util; | |||||
| import com.iformall.video.VideoFactory; | import com.iformall.video.VideoFactory; | ||||
| import com.iformall.video.entity.VideUploadResult; | import com.iformall.video.entity.VideUploadResult; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| @@ -106,8 +105,19 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| JSONObject personObject = JSONObject.parseObject(record.getPersonJson()); | JSONObject personObject = JSONObject.parseObject(record.getPersonJson()); | ||||
| if(personObject != null && !personObject.isEmpty()){ | if(personObject != null && !personObject.isEmpty()){ | ||||
| isPerson = true; | isPerson = true; | ||||
| Long id = personObject.getLong("id"); | |||||
| Integer type = personObject.getInteger("type"); | |||||
| String material = personObject.getString("material"); | |||||
| int x = personObject.getIntValue("x"); | |||||
| int y = personObject.getIntValue("y"); | |||||
| int z = personObject.getIntValue("z"); | |||||
| float w = personObject.getFloatValue("w"); | |||||
| float h = personObject.getFloatValue("h"); | |||||
| } | } | ||||
| }catch(Exception e){} | |||||
| }catch(Exception e){ | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数字人层级数据错误"); | |||||
| } | |||||
| //给数字人默认属性 | //给数字人默认属性 | ||||
| if(!isPerson){ | if(!isPerson){ | ||||
| JSONObject personObject = new JSONObject(); | JSONObject personObject = new JSONObject(); | ||||
| @@ -126,8 +136,8 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| personObject.put("y",y); | personObject.put("y",y); | ||||
| } | } | ||||
| personObject.put("z",0); | personObject.put("z",0); | ||||
| personObject.put("w","1");//比例系数(2位小数) | |||||
| personObject.put("h","1");//比例系数(2位小数) | |||||
| personObject.put("w",1.0f);//比例系数(2位小数) | |||||
| personObject.put("h",1.0f);//比例系数(2位小数) | |||||
| record.setPersonJson(personObject.toJSONString()); | record.setPersonJson(personObject.toJSONString()); | ||||
| } | } | ||||
| //默认背景 | //默认背景 | ||||
| @@ -196,11 +206,11 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| materialIds.add(id); | materialIds.add(id); | ||||
| } | } | ||||
| String material = jsonObject.getString("material"); | String material = jsonObject.getString("material"); | ||||
| Integer x = jsonObject.getInteger("x"); | |||||
| Integer y = jsonObject.getInteger("y"); | |||||
| Integer z = jsonObject.getInteger("z"); | |||||
| String w = jsonObject.getString("w"); | |||||
| String h = jsonObject.getString("h"); | |||||
| int x = jsonObject.getIntValue("x"); | |||||
| int y = jsonObject.getIntValue("y"); | |||||
| int z = jsonObject.getIntValue("z"); | |||||
| float w = jsonObject.getFloatValue("w"); | |||||
| float h = jsonObject.getFloatValue("h"); | |||||
| } | } | ||||
| } | } | ||||
| record.setMaterialIds(JSONArray.toJSONString(materialIds)); | record.setMaterialIds(JSONArray.toJSONString(materialIds)); | ||||
| @@ -258,12 +268,21 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| } | } | ||||
| String voiceMouldSmId = null; | String voiceMouldSmId = null; | ||||
| String voiceType = "default";//默认 | |||||
| if(mouldVideo.getVoiceMouldId() == null){ | if(mouldVideo.getVoiceMouldId() == null){ | ||||
| msg = "未选择声音模板"; | msg = "未选择声音模板"; | ||||
| }else{ | }else{ | ||||
| try{ | try{ | ||||
| JSONObject personMouldObject = JSONObject.parseObject(mouldVideo.getVoiceMouldSm()); | JSONObject personMouldObject = JSONObject.parseObject(mouldVideo.getVoiceMouldSm()); | ||||
| voiceMouldSmId = personMouldObject.getString("mouldSmId"); | voiceMouldSmId = personMouldObject.getString("mouldSmId"); | ||||
| Integer speakType = personMouldObject.getInteger("speakType"); | |||||
| Integer personType = personMouldObject.getInteger("personType"); | |||||
| if(speakType != null && speakType > 0){ | |||||
| voiceType = EnumSpeakType.getEnum(speakType).getMessage(); | |||||
| }else if(personType != null && personType > 0){ | |||||
| voiceType = EnumPersonType.getEnum(personType).getMessage(); | |||||
| } | |||||
| }catch(Exception e){} | }catch(Exception e){} | ||||
| if(StringUtils.isBlank(voiceMouldSmId)){ | if(StringUtils.isBlank(voiceMouldSmId)){ | ||||
| msg = "参数错误,未找到声音模板数据"; | msg = "参数错误,未找到声音模板数据"; | ||||
| @@ -284,8 +303,58 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| return new AsyncResult<>(0); | return new AsyncResult<>(0); | ||||
| } | } | ||||
| Long backgroundId = mouldVideo.getBackgroundId(); | |||||
| if(backgroundId == null){ | |||||
| videoUpd.setVideoStatus(EnumVideoStatus.fail.getCode()); | |||||
| videoUpd.setVideoMsg("未选择背景"); | |||||
| this.saveOrUpdate(videoUpd); | |||||
| return new AsyncResult<>(0); | |||||
| } | |||||
| try{ | try{ | ||||
| AiVideoResult video = AiVideoHelper.createVideo(personMouldSmId, voiceMouldSmId, paperwork); | |||||
| AiVideoParam videoParam = new AiVideoParam(); | |||||
| videoParam.setGen_txt(paperwork); | |||||
| videoParam.setVideo_template_id(personMouldSmId); | |||||
| videoParam.setVoice_id(voiceMouldSmId); | |||||
| videoParam.setVoice_style(voiceType); | |||||
| AiVideoParam.VideoFiles videoFiles = new AiVideoParam.VideoFiles(); | |||||
| AiVideoParam.BackGround backGround = new AiVideoParam.BackGround(); | |||||
| backGround.setType(EnumVideoType.getEnum(mouldVideo.getVideoType()).getType()); | |||||
| JSONObject backgroundObject = JSONObject.parseObject(mouldVideo.getBackgroundSm()); | |||||
| backGround.setImage(Base64Util.imageUrlToBase64(backgroundObject.getString("material"))); | |||||
| videoFiles.setBack_ground(backGround); | |||||
| AiVideoParam.Material digitalHuman = new AiVideoParam.Material(); | |||||
| JSONObject personObject = JSONObject.parseObject(mouldVideo.getPersonJson()); | |||||
| int[] digitalHumanCoord = new int[]{personObject.getIntValue("x"),personObject.getIntValue("y")}; | |||||
| digitalHuman.setCoord(digitalHumanCoord); | |||||
| digitalHuman.setLevel(personObject.getIntValue("z")); | |||||
| digitalHuman.setRatio(personObject.getFloatValue("w")); | |||||
| videoFiles.setDigital_human(digitalHuman); | |||||
| if(StringUtils.isNotBlank(mouldVideo.getMaterialAllJson())){ | |||||
| JSONArray materialAllArray = JSONArray.parseArray(mouldVideo.getMaterialAllJson()); | |||||
| if(materialAllArray != null && !materialAllArray.isEmpty()){ | |||||
| List<AiVideoParam.Material> materialList = new ArrayList<>(); | |||||
| for(int i = 0;i < materialAllArray.size();i++) { | |||||
| JSONObject materialObject = materialAllArray.getJSONObject(i); | |||||
| if(EnumMouldPatchType.material_mould.getCode().equals(materialObject.getInteger("type"))){ | |||||
| AiVideoParam.Material material = new AiVideoParam.Material(); | |||||
| int[] materialCoord = new int[]{materialObject.getIntValue("x"),materialObject.getIntValue("y")}; | |||||
| material.setCoord(materialCoord); | |||||
| material.setImage(Base64Util.imageUrlToBase64(materialObject.getString("material"))); | |||||
| material.setLevel(materialObject.getIntValue("z")); | |||||
| material.setRatio(materialObject.getFloatValue("w")); | |||||
| materialList.add(material); | |||||
| } | |||||
| } | |||||
| if(materialList.size() > 0){ | |||||
| videoFiles.setMaterial(materialList); | |||||
| } | |||||
| } | |||||
| } | |||||
| videoParam.setVideo_files(videoFiles); | |||||
| AiVideoResult video = AiVideoHelper.createVideo(videoParam); | |||||
| if(video.isSuccess()){ | if(video.isSuccess()){ | ||||
| videoUpd.setVideoPath(video.getUrl()); | videoUpd.setVideoPath(video.getUrl()); | ||||
| videoUpd.setVideoTime(video.getDuration()+""); | videoUpd.setVideoTime(video.getDuration()+""); | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.sm; | package com.iformall.sm; | ||||
| import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
| import com.alibaba.fastjson.JSONArray; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.douyin.pay.orderQuery.OrderQueryResult; | import com.iformall.douyin.pay.orderQuery.OrderQueryResult; | ||||
| @@ -8,8 +9,11 @@ import com.iformall.douyin.pay.orderQuery.QueryMerchantResult; | |||||
| import com.iformall.douyin.pay.orderQuery.QueryRefundResult; | import com.iformall.douyin.pay.orderQuery.QueryRefundResult; | ||||
| import com.iformall.douyin.pay.orderQuery.QuerySettleResult; | import com.iformall.douyin.pay.orderQuery.QuerySettleResult; | ||||
| import com.iformall.douyin.pay.preOrder.*; | import com.iformall.douyin.pay.preOrder.*; | ||||
| import com.iformall.enums.EnumMouldPatchType; | |||||
| import com.iformall.enums.EnumPayStatus; | import com.iformall.enums.EnumPayStatus; | ||||
| import com.iformall.enums.EnumVideoType; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.utils.Base64Util; | |||||
| import com.iformall.utils.HttpUtil; | import com.iformall.utils.HttpUtil; | ||||
| import com.iformall.utils.sign.SignUtils; | import com.iformall.utils.sign.SignUtils; | ||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| @@ -25,21 +29,15 @@ public class AiVideoHelper { | |||||
| public static String uri = "http://222.128.9.132:22266"; | public static String uri = "http://222.128.9.132:22266"; | ||||
| public static String doPost(String url, Map<String, Object> params) { | |||||
| return HttpUtil.doPost(url,params); | |||||
| public static String doPost(String url, String params) { | |||||
| return HttpUtil.doAiVideoPost(url,params); | |||||
| } | } | ||||
| public static AiVideoResult createVideo(String video_template_id,String voice_id,String gen_txt) { | |||||
| Map<String,Object> params = new HashMap<>(); | |||||
| params.put("video_template_id",video_template_id); | |||||
| if(StringUtils.isBlank(voice_id)){ | |||||
| voice_id = "default"; | |||||
| } | |||||
| params.put("voice_id",voice_id); | |||||
| params.put("gen_txt",gen_txt); | |||||
| log.info("生成视频start request:" + JSONObject.toJSONString(params)); | |||||
| String response = doPost(uri+"/gen_dh_video", params); | |||||
| public static AiVideoResult createVideo(AiVideoParam videoParam) { | |||||
| log.info("生成视频start request:" + JSONObject.toJSONString(videoParam)); | |||||
| String response = doPost(uri+"/gen_dh_video", JSONObject.toJSONString(videoParam)); | |||||
| log.info("生成视频end response:"+response); | log.info("生成视频end response:"+response); | ||||
| AiVideoResult result = new AiVideoResult(); | AiVideoResult result = new AiVideoResult(); | ||||
| @@ -50,12 +48,16 @@ public class AiVideoHelper { | |||||
| return result; | return result; | ||||
| } | } | ||||
| JSONObject jsonObject = JSON.parseObject(response); | JSONObject jsonObject = JSON.parseObject(response); | ||||
| JSONObject status = jsonObject.getJSONObject("status"); | JSONObject status = jsonObject.getJSONObject("status"); | ||||
| Integer code = status.getInteger("code"); | Integer code = status.getInteger("code"); | ||||
| if(code == null){ | |||||
| result.setSuccess(false); | |||||
| result.setMsg("请求生成视频异常,请稍后重试"); | |||||
| return result; | |||||
| } | |||||
| if(null != code && code.intValue() == 1000){ | |||||
| if(code.intValue() == 1000){ | |||||
| JSONObject data = jsonObject.getJSONObject("data"); | JSONObject data = jsonObject.getJSONObject("data"); | ||||
| JSONObject video = data.getJSONObject("video"); | JSONObject video = data.getJSONObject("video"); | ||||
| result.setSuccess(true); | result.setSuccess(true); | ||||
| @@ -93,8 +95,25 @@ public class AiVideoHelper { | |||||
| } | } | ||||
| public static void main(String[] args) { | public static void main(String[] args) { | ||||
| createVideo("16739389169485046_nVi875Ej","default", | |||||
| "恭喜发财"); | |||||
| AiVideoParam videoParam = new AiVideoParam(); | |||||
| videoParam.setGen_txt("我写了一篇小说,你帮我看看。"); | |||||
| videoParam.setVideo_template_id("16776650495633934_PgNAW8Sm"); | |||||
| videoParam.setVoice_id("zh-CN-XiaohanNeural"); | |||||
| videoParam.setVoice_style("default"); | |||||
| AiVideoParam.VideoFiles videoFiles = new AiVideoParam.VideoFiles(); | |||||
| AiVideoParam.BackGround backGround = new AiVideoParam.BackGround(); | |||||
| backGround.setType("vertical"); | |||||
| backGround.setImage(Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/background/grace/1080.jpg")); | |||||
| videoFiles.setBack_ground(backGround); | |||||
| AiVideoParam.Material digitalHuman = new AiVideoParam.Material(); | |||||
| int[] digitalHumanCoord = new int[]{0,0}; | |||||
| digitalHuman.setCoord(digitalHumanCoord); | |||||
| digitalHuman.setLevel(0); | |||||
| digitalHuman.setRatio(1.0f); | |||||
| videoFiles.setDigital_human(digitalHuman); | |||||
| videoParam.setVideo_files(videoFiles); | |||||
| AiVideoResult video = AiVideoHelper.createVideo(videoParam); | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,59 @@ | |||||
| package com.iformall.sm; | |||||
| import lombok.Data; | |||||
| import java.util.List; | |||||
| @Data | |||||
| public class AiVideoParam { | |||||
| /** | |||||
| * | 参数 | 必选 | 类型 | 说明 | | |||||
| * | ----------------- | ---- | ------- | ------------------------------------------------------------ | | |||||
| * | gen_txt | 是 | string | 需要生成的文字内容 | | |||||
| * | video_template_id | 是 | string | 使用的视频模板ID | | |||||
| * | voice_id | 是 | string | 音色ID,如:"zh-CN-YunxiNeural"。如果使用“default”,表示不指定具体的,由后端服务自动匹配 | | |||||
| * | voice_style | 是 | string | TTS语音风格,如:”angry“。如果使用“default”,表示默认风格 | | |||||
| * | video_files | 否 | array[] | 字典类型,包含背景、数字人、素材信息。缺省,使用默认模板。 | | |||||
| * | + back_ground | 否 | array[] | 字典类型,背景信息 | | |||||
| * | ++ image | 是 | string | 背景图片,base64编辑后的字符串类型数据 | | |||||
| * | ++ type | 是 | string | 背景图片类型,共两种。horizontal 表示横版,vertical 表示竖版 | | |||||
| * | + digital_human | 否 | array[] | 字典类型,数字人信息 | | |||||
| * | ++ coord | 是 | array[] | 集合类型,表示相对于左上角的位置,如[100, 200],表示相对于左边缘100像素,相对于上边缘200相素 | | |||||
| * | ++ level | 是 | uint32 | 数字人图片的层级,值越大表示越高层,0表示最底层 | | |||||
| * | ++ ratio | 是 | float32 | 相对于原数字人图片大小的缩放比例,如0.5表示宽高均变为原来的一半 | | |||||
| * | + material | 否 | array[] | 字典类型,素材信息。具体的值是集合类型,内部由每个素材信息(素材信息是字典类型)组成,如"material":[{素材1的信息},{素材2的信息},{素材3的信息}] | | |||||
| * | ++ | 否 | array[] | 集合类型,每个素材信息(素材信息是字典类型)组成 | | |||||
| * | +++ coord | 是 | array[] | 集合类型,表示相对于左上角的位置,如[100, 200],表示相对于左边缘100像素,相对于上边缘200相素 | | |||||
| * | +++ image | 是 | string | 素材图片,base64编辑后的字符串类型数据 | | |||||
| * | +++ level | 是 | uint32 | 素材图片的层级,值越大表示越高层,0表示最底层 | | |||||
| * | +++ ratio | 是 | float32 | 相对于原素材图片大小的缩放比例,如0.5表示宽高均变为原来的一半 | | |||||
| */ | |||||
| private String gen_txt; | |||||
| private String video_template_id; | |||||
| private String voice_id; | |||||
| private String voice_style; | |||||
| private VideoFiles video_files; | |||||
| @Data | |||||
| public static class VideoFiles { | |||||
| private BackGround back_ground; | |||||
| private Material digital_human; | |||||
| private List<Material> material; | |||||
| } | |||||
| @Data | |||||
| public static class BackGround { | |||||
| private String image; | |||||
| private String type; | |||||
| } | |||||
| @Data | |||||
| public static class Material { | |||||
| private int[] coord; | |||||
| private String image; | |||||
| private int level; | |||||
| private float ratio; | |||||
| } | |||||
| } | |||||
| @@ -1,8 +1,12 @@ | |||||
| package com.iformall.utils; | package com.iformall.utils; | ||||
| import java.io.IOException; | |||||
| import java.io.OutputStream; | |||||
| import java.io.Writer; | |||||
| import sun.misc.BASE64Encoder; | |||||
| import java.io.*; | |||||
| import java.net.HttpURLConnection; | |||||
| import java.net.URL; | |||||
| import java.util.regex.Matcher; | |||||
| import java.util.regex.Pattern; | |||||
| public class Base64Util { | public class Base64Util { | ||||
| private static final char S_BASE64CHAR[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', | private static final char S_BASE64CHAR[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', | ||||
| @@ -309,4 +313,79 @@ public class Base64Util { | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * 图片URL转Base64编码 | |||||
| * @param imgUrl 图片URL | |||||
| * @return Base64编码 | |||||
| */ | |||||
| public static String imageUrlToBase64(String imgUrl) { | |||||
| URL url = null; | |||||
| InputStream is = null; | |||||
| ByteArrayOutputStream outStream = null; | |||||
| HttpURLConnection httpUrl = null; | |||||
| try { | |||||
| url = new URL(imgUrl); | |||||
| httpUrl = (HttpURLConnection) url.openConnection(); | |||||
| httpUrl.connect(); | |||||
| httpUrl.getInputStream(); | |||||
| is = httpUrl.getInputStream(); | |||||
| outStream = new ByteArrayOutputStream(); | |||||
| //创建一个Buffer字符串 | |||||
| byte[] buffer = new byte[1024]; | |||||
| //每次读取的字符串长度,如果为-1,代表全部读取完毕 | |||||
| int len = 0; | |||||
| //使用输入流从buffer里把数据读取出来 | |||||
| while( (len = is.read(buffer)) != -1 ){ | |||||
| //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 | |||||
| outStream.write(buffer, 0, len); | |||||
| } | |||||
| // 对字节数组Base64编码 | |||||
| return encode(outStream.toByteArray()); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } finally { | |||||
| try { | |||||
| if(is != null) { | |||||
| is.close(); | |||||
| } | |||||
| if(outStream != null) { | |||||
| outStream.close(); | |||||
| } | |||||
| if(httpUrl != null) { | |||||
| httpUrl.disconnect(); | |||||
| } | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| // /** | |||||
| // * 图片转字符串 | |||||
| // * @param image 图片Buffer | |||||
| // * @return Base64编码 | |||||
| // */ | |||||
| // public static String encode(byte[] image){ | |||||
| // BASE64Encoder decoder = new BASE64Encoder(); | |||||
| // return replaceEnter(decoder.encode(image)); | |||||
| // } | |||||
| // | |||||
| // /** | |||||
| // * 字符替换 | |||||
| // * @param str 字符串 | |||||
| // * @return 替换后的字符串 | |||||
| // */ | |||||
| // public static String replaceEnter(String str){ | |||||
| // String reg ="[\n-\r]"; | |||||
| // Pattern p = Pattern.compile(reg); | |||||
| // Matcher m = p.matcher(str); | |||||
| // return m.replaceAll(""); | |||||
| // } | |||||
| } | } | ||||
| @@ -133,13 +133,8 @@ public class HttpUtil { | |||||
| // 实例化HTTP方法 | // 实例化HTTP方法 | ||||
| HttpPost request = new HttpPost(); | HttpPost request = new HttpPost(); | ||||
| request.setURI(new URI(url)); | request.setURI(new URI(url)); | ||||
| request.setConfig(RequestConfig.custom() | |||||
| .setConnectionRequestTimeout(5000) | |||||
| .setConnectTimeout(300000) | |||||
| .setSocketTimeout(300000) | |||||
| .build()); | |||||
| //设置参数 | //设置参数 | ||||
| List<NameValuePair> nvps = new ArrayList<NameValuePair>(); | List<NameValuePair> nvps = new ArrayList<NameValuePair>(); | ||||
| for (Iterator iter = params.keySet().iterator(); iter.hasNext();) { | for (Iterator iter = params.keySet().iterator(); iter.hasNext();) { | ||||
| @@ -382,52 +377,6 @@ public class HttpUtil { | |||||
| return null; | return null; | ||||
| } | } | ||||
| // /** | |||||
| // * post请求(用于请求json格式的参数) | |||||
| // * @param url | |||||
| // * @param params | |||||
| // * @return | |||||
| // */ | |||||
| // public static String doPost(String url, String params) throws Exception { | |||||
| // | |||||
| // CloseableHttpClient httpclient = HttpClients.createDefault(); | |||||
| // HttpPost httpPost = new HttpPost(url);// 创建httpPost | |||||
| // httpPost.setHeader("Accept", "application/json"); | |||||
| // httpPost.setHeader("Content-Type", "application/json"); | |||||
| // String charSet = "UTF-8"; | |||||
| // StringEntity entity = new StringEntity(params, charSet); | |||||
| // httpPost.setEntity(entity); | |||||
| // CloseableHttpResponse response = null; | |||||
| // | |||||
| // try { | |||||
| // response = httpclient.execute(httpPost); | |||||
| // StatusLine status = response.getStatusLine(); | |||||
| // int state = status.getStatusCode(); | |||||
| // if (state == HttpStatus.SC_OK) { | |||||
| // HttpEntity responseEntity = response.getEntity(); | |||||
| // String jsonString = EntityUtils.toString(responseEntity); | |||||
| // return jsonString; | |||||
| // } | |||||
| // else{ | |||||
| // logger.info("请求返回:"+state+"("+url+")"); | |||||
| // } | |||||
| // } | |||||
| // finally { | |||||
| // if (response != null) { | |||||
| // try { | |||||
| // response.close(); | |||||
| // } catch (IOException e) { | |||||
| // logger.error(e.getMessage()); | |||||
| // } | |||||
| // } | |||||
| // try { | |||||
| // httpclient.close(); | |||||
| // } catch (IOException e) { | |||||
| // logger.error(e.getMessage()); | |||||
| // } | |||||
| // } | |||||
| // return null; | |||||
| // } | |||||
| /** | /** | ||||
| * post请求(用于请求json格式的参数) | * post请求(用于请求json格式的参数) | ||||
| @@ -646,5 +595,61 @@ public class HttpUtil { | |||||
| // | // | ||||
| // } | // } | ||||
| /** | |||||
| * post请求(用于请求json格式的参数) | |||||
| * @param url | |||||
| * @param params | |||||
| * @return | |||||
| */ | |||||
| public static String doAiVideoPost(String url, String params){ | |||||
| CloseableHttpClient httpclient = HttpClients.createDefault(); | |||||
| HttpPost httpPost = new HttpPost(url);// 创建httpPost | |||||
| httpPost.setConfig(RequestConfig.custom() | |||||
| .setConnectionRequestTimeout(5000) | |||||
| .setConnectTimeout(3000000) | |||||
| .setSocketTimeout(3000000) | |||||
| .build()); | |||||
| httpPost.setHeader("Accept", "application/json"); | |||||
| httpPost.setHeader("Content-Type", "application/json"); | |||||
| String charSet = "UTF-8"; | |||||
| StringEntity entity = new StringEntity(params, charSet); | |||||
| httpPost.setEntity(entity); | |||||
| CloseableHttpResponse response = null; | |||||
| try { | |||||
| response = httpclient.execute(httpPost); | |||||
| StatusLine status = response.getStatusLine(); | |||||
| int state = status.getStatusCode(); | |||||
| if (state == HttpStatus.SC_OK) { | |||||
| HttpEntity responseEntity = response.getEntity(); | |||||
| String jsonString = EntityUtils.toString(responseEntity); | |||||
| return jsonString; | |||||
| } | |||||
| else{ | |||||
| logger.info("请求返回:"+state+"("+url+")"); | |||||
| } | |||||
| } | |||||
| catch(Exception e){ | |||||
| logger.error(e.getMessage()); | |||||
| return null; | |||||
| } | |||||
| finally { | |||||
| if (response != null) { | |||||
| try { | |||||
| response.close(); | |||||
| } catch (IOException e) { | |||||
| logger.error(e.getMessage()); | |||||
| } | |||||
| } | |||||
| try { | |||||
| httpclient.close(); | |||||
| } catch (IOException e) { | |||||
| logger.error(e.getMessage()); | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | } | ||||