对接第三方接口获取数据
以下仅为自己项目中所写并能够跑通 有问题留言 如若不对 请指出告知一下文章来源地址https://www.toymoban.com/news/detail-735597.html
//传参形式:map 基本类型 string
public static String creatPost(String url,Map param,String contentType) throws Exception{
//时间戳
long timeSpan = System.currentTimeMillis()/1000;
System.out.println("时间戳="+timeSpan);
//组装TOKEN
String signature = SecureUtil.md5(APPTOKEN + APPSECRET + timeSpan).toLowerCase();
System.out.println("组装signature="+signature);
System.out.println("组装signature的长度="+signature.length());
//发起请求
HttpResponse responsse = HttpUtil.createRequest(Method.POST, url)
.header("x-qys-accesstoken",APPTOKEN)
.header("x-qys-timestamp", timeSpan+"")
.header("x-qys-signature", signature)
.header("Content-Type",contentType)
.form(param) --以表单形式的参数拼接
.execute();
System.out.println("--------");
String result = responsse.body();
System.out.println("响应结果="+result);
System.out.println("--------");
return "SUCCESS";
}
//contentType = "multipart/form-data"
//如果是post请求 contentType = "multipart/form-data" 建议使用.form进行传参
//如果是get请求 建议使用.body进行传参 形式 url+"?"+"param1=value1¶m2=value2"
//传参形式:json 需要在body(json.toString()) 并不支持JSONObejct对象
public static String creatRequestPost(String url, JSONObject json,String contentType ) throws Exception{
//时间戳
long timeSpan = System.currentTimeMillis()/1000;
System.out.println("时间戳="+timeSpan);
//组装TOKEN
String signature = SecureUtil.md5(APPTOKEN + APPSECRET + timeSpan).toLowerCase();
System.out.println("组装signature="+signature);
System.out.println("组装signature的长度="+signature.length());
//发起请求
HttpResponse responsse = HttpRequest.post(url)
.header("x-qys-accesstoken",APPTOKEN)
.header("x-qys-timestamp", timeSpan+"")
.header("x-qys-signature", signature)
.header("Content-Type",contentType)
.body(json.toString())
.execute();
//输出响应结果
System.out.println("--------");
String result = responsse.body();
System.out.println("响应结果="+result);
System.out.println("--------");
return "SUCCESS";
}
对接第三方接口获取文件—成功代码
//下载文件是get请求 此方法是可以成功跑通
public static String DownAndReadFile(String url,String param) throws Exception {
//时间戳
long timeSpan = System.currentTimeMillis()/1000;
System.out.println("时间戳="+timeSpan);
//组装TOKEN
String signature = SecureUtil.md5(APPTOKEN + APPSECRET + timeSpan).toLowerCase();
System.out.println("组装signature="+signature);
System.out.println("组装signature的长度="+signature.length());
//拼接url
url = url+"?"+param;
System.out.println("访问路径为:"+url);
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("x-qys-accesstoken",APPTOKEN );
headers.add("x-qys-timestamp", timeSpan+"");
headers.add("x-qys-signature", signature);
HttpEntity<String> requestEntity = new HttpEntity<>(headers);
ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, byte[].class);
byte[] bytes = entity.getBody();
System.out.println(bytes);
//保存地址
String dirPath = "F:\\code";
//检查指定目录,用户没有指定目录 抛出异常提示用户
if(dirPath==null||dirPath.length()==0)throw new Exception("指定路径目录不能为空");
//创建file文件对象
File savePath = new File(dirPath);
//判断文件目录是否存在,不存在即创建目录
if (!savePath.exists()) {
savePath.mkdir();
}
//获取文件名
File file = new File(savePath+"//下载测试.pdf");
//创建新文件
if(file!=null && !file.exists()){
file.createNewFile();
}
//获取文件名
OutputStream output = new FileOutputStream(file);
output.write(bytes);
//资源关闭
output.close();
return "SUCCESS";
}
对接第三方接口获取文件—失败代码 hutool工具类并没有成功 只是下载下来了 但是打不开(需要输入密码)或者出现文件损坏
//时间戳
long timeSpan = System.currentTimeMillis()/1000;
System.out.println("时间戳="+timeSpan);
//组装TOKEN
String signature = SecureUtil.md5(APPTOKEN + APPSECRET + timeSpan).toLowerCase();
System.out.println("组装signature="+signature);
System.out.println("组装signature的长度="+signature.length());
//保存地址
String dirPath = "F:\\code";
//检查指定目录,用户没有指定目录 抛出异常提示用户
if(dirPath==null||dirPath.length()==0)throw new Exception("指定路径目录不能为空");
//创建file文件对象
File savePath = new File(dirPath);
//判断文件目录是否存在,不存在即创建目录
if (!savePath.exists()) {
savePath.mkdir();
}
//获取文件名
File file = new File(savePath+"//测试.pdf");
//创建新文件
if(file!=null && !file.exists()){
file.createNewFile();
}
//输出流
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file,false));
//发起请求
url = url+"?"+param;
System.out.println("访问路径为:"+url);
URL urlLink = new URL(url);
//获取链接
HttpURLConnection connection = (HttpURLConnection) urlLink.openConnection();
connection.setDoInput(true);//设置是否要从 URL 连接读取数据,默认为true
connection.setRequestProperty("x-qys-accesstoken",APPTOKEN);
connection.setRequestProperty("x-qys-timestamp", timeSpan+"");
connection.setRequestProperty("Authorization", AUTHOR);
connection.setRequestProperty("x-qys-signature", signature);
connection.connect();
//获取输入流,读取文件
InputStreamReader in = new InputStreamReader(connection.getInputStream());
char[] buffer = new char[1024];
int length;
//读取文件
while((length=in.read(buffer))!= -1){
//写出
out.write(buffer, 0, length);
}
out.flush();
in.close();
out.close();
文章来源:https://www.toymoban.com/news/detail-735597.html
到了这里,关于hutool的httpUtil的使用(访问第三方接口)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!