@@ -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; | |||||
} | |||||
} | } | ||||