hutool的httpUtil的使用(访问第三方接口)

这篇具有很好参考价值的文章主要介绍了hutool的httpUtil的使用(访问第三方接口)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对接第三方接口获取数据

以下仅为自己项目中所写并能够跑通 有问题留言 如若不对 请指出告知一下文章来源地址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&param2=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();

到了这里,关于hutool的httpUtil的使用(访问第三方接口)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 万字长文讲解调用第三方接口,RestTemplate,urlConnection使用详解,java代码模拟postman发送请求

    业务场景 :在日常开发中,经常需要调用第三方接口,例如调用物流接口,此时需要利用urlConnection或者restTemplate模拟postman发送请求,请求支持加header ,设置content-type支持传递json;请求方式get,post,也可以需要传递文件,或者传递文件流; 下面这个例子就包含日常开发中大

    2024年02月05日
    浏览(49)
  • java调第三方接口

    目录 背景 Spring的RestTemplate 1.引入依赖 2.RestTemplate配置类 3.RestTemplate实现类 java调第三方接口我百度的有三种方法. 第一种:通过JDK网络类Java.net.HttpURLConnection 第二种:通过Apache common封装好的HttpClient 第三种:通过Spring的RestTemplate 这个三种方法在我的scdn收藏里有,都是可以直接用的

    2024年02月05日
    浏览(48)
  • php第三方阿里云接口

    阿里云 OpenAPI 开发者门户

    2024年02月15日
    浏览(29)
  • 解决iframe嵌套第三方网址不能访问

    第一种报错描述: Refused to display \\\'嵌套的网址\\\' in a frame because it set \\\'X-Frame-Options\\\' to \\\'sameorigin\\\'. 关于 X-Frame-Options : X-Frame-Options 是一个 HTTP 响应头部,用于防止网站被嵌入到其他网站的 iframe 中。该协议定义了一些选项,使网站可以控制在哪些网站中可以嵌入自己的内容,从而防

    2024年02月11日
    浏览(29)
  • 【黑马头条之内容安全第三方接口】

    本笔记内容为黑马头条项目的文本-图片内容审核接口部分 目录 一、概述 二、准备工作 三、文本内容审核接口 四、图片审核接口 五、项目集成 内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风险。 目前很多平台都支持

    2024年02月15日
    浏览(51)
  • 对接 Web Service第三方接口

    这次也是头一次接触对接第三方WebService接口,这技术都很老了,使用postman测试的时候还找了半天资料🤣。 一般来说第三方都会限制ip这些,需要注意的是,给到的接口地址是能用公网进行访问的哦。 1、拿到接口路径 http://111.111.11.1:111/services/infoWebService?wsdl 这个当然是不可

    2023年04月11日
    浏览(36)
  • 我调用第三方接口遇到的13大坑

    在实际工作中,我们经常需要在项目中调用第三方API接口,获取数据,或者上报数据,进行数据交换和通信。 那么,调用第三方API接口会遇到哪些问题?如何解决这些问题呢? 这篇文章就跟大家一起聊聊第三方API接口的话题,希望对你会有所帮助。   一般我们在第一次对接

    2023年04月16日
    浏览(45)
  • SpringBoot案例 调用第三方接口传输数据

    最近再写调用三方接口传输数据的项目,这篇博客记录项目完成的过程,方便后续再碰到类似的项目可以快速上手 项目结构: 这里主要介绍HttpClient发送POST请求工具类和定时器的使用,mvc三层架构编码不做探究 pom.xml application-dev.yml Constast utils scheduled 该定时任务每10秒执行一

    2024年02月12日
    浏览(46)
  • OpenAI 接口API的第三方代理

    OpenAI推出了针对开发者的API接口,这是供程序代码去调用的,不是面向普通人的。我们经常看到的国内版ChatGPT,就是对API接口的界面包装再出售会员。 目前,公开对外使用的是GPT-3.5模型的API接口,GPT-4模型的接口处于测试阶段,开发者需要申请权限加入等待列表,审核通过

    2024年02月07日
    浏览(36)
  • 仅仅是调用第三方接口那么简单吗?

    最近有个项目需要本地处理之后,然后调用第三方接口,本来开始觉得很简单得事情,不就是调用第三方接口吗?但是却一波三折。 首先有了下面的第一版的设计。 这个设计很简单,也是最容易想到的。主要有下面几步 1、本地处理; 2、调用第三方接口; 3、本地日志打印

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包