1、JSON值访问

  1. /**
  2. * 调用对方接口方法
  3. * @param path 对方或第三方提供的路径
  4. * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
  5. */
  6. public static void interfaceUtil(String path,String data) {
  7. try {
  8. URL url = new URL(path);
  9. //打开和url之间的连接
  10. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  11. //设置请求的方法类型
  12. conn.setRequestMethod("POST");
  13. //设置请求的内容类型
  14. conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
  15. //设置发送数据
  16. conn.setDoOutput(true);
  17. //设置接受数据
  18. conn.setDoInput(true);
  19. //发送数据,使用输出流
  20. OutputStream outputStream = conn.getOutputStream();
  21. outputStream.write(data.getBytes("UTF-8"));
  22. //获取URLConnection对象对应的输入流
  23. InputStream is = conn.getInputStream();
  24.  
  25. //构造一个字符流缓存
  26. BufferedReader br = new BufferedReader(new InputStreamReader(is));
  27. String str = "";
  28. while ((str = br.readLine()) != null) {
  29. System.out.println(str);
  30. }
  31. String response = byteArrayOutputStream.toString();
  32. System.out.println(response);
  33. //关闭流
  34. is.close();
  35. //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
  36. //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
  37. conn.disconnect();
  38. System.out.println("完整结束");
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }

2、form表单形式提交key-value值访问

key-value值放进一个Map中

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStream;
  6. import java.net.HttpURLConnection;
  7. import java.net.URL;
  8. import java.util.Map;
  9. import java.util.Map.Entry;
  10. import org.apache.log4j.Logger;
  11.  
  12. /**
  13. * 调用对方接口方法
  14. * @author wxd
  15. */
  16. public class InterfaceUtil {
  17.  
  18. private static final Logger logger = Logger.getLogger(InterfaceUtil.class);
  19.  
  20. private static final int REQUEST_SUCCESS = ;
  21.  
  22. /**
  23. * 调用对方接口方法
  24. * @param path 对方或第三方提供的路径
  25. * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
  26. */
  27. public static void postRequest(String path, Map<String,String> params) {
  28. OutputStream outputStream = null;
  29. InputStream is = null;
  30. HttpURLConnection conn = null;
  31. URL url = null;
  32. try {
  33. // 拼接请求参数
  34. StringBuffer sb = new StringBuffer();
  35. String sbRlt = null;
  36. if (params != null) {
  37. for (Entry<String, String> e : params.entrySet()) {
  38. sb.append(e.getKey());
  39. sb.append("=");
  40. sb.append(e.getValue());
  41. sb.append("&");
  42. }
  43. sbRlt = sb.substring(, sb.length() - );
  44. }
  45. url = new URL(path);
  46. //打开和url之间的连接
  47. conn = (HttpURLConnection) url.openConnection();
  48.  
  49. //设置请求的方法类型
  50. conn.setRequestMethod("POST");
  51. //设置请求的内容类型
  52. conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
  53. //设置发送数据
  54. conn.setDoOutput(true);
  55. //设置接受数据
  56. conn.setDoInput(true);
  57. //发送数据,使用输出流
  58. outputStream = conn.getOutputStream();
  59. outputStream.write(sbRlt.getBytes("UTF-8"));
  60. //获取URLConnection对象对应的输入流
  61. is = conn.getInputStream();
  62. if(conn.getResponseCode() == REQUEST_SUCCESS) {
  63. //构造一个字符流缓存
  64. BufferedReader br = new BufferedReader(new InputStreamReader(is));
  65. String str = "";
  66. while ((str = br.readLine()) != null) {
  67. logger.info(str);
  68. System.out.println(str);
  69. }
  70. }else {
  71. logger.error("访问失败");
  72. System.out.println("访问失败");
  73. }
  74. } catch (Exception e) {
  75. logger.error("访问失败");
  76. e.printStackTrace();
  77. } finally {
  78. if(is != null) {
  79. try {
  80. is.close();
  81. } catch (IOException e) {
  82. e.printStackTrace();
  83. }
  84. }
  85. if(outputStream != null) {
  86. try {
  87. outputStream.close();
  88. } catch (IOException e) {
  89. e.printStackTrace();
  90. }
  91. }
  92. if(conn != null) {
  93. conn.disconnect();
  94. }
  95. }
  96. }
  97.  
  98. }

Java调用第三方接口工具类(json、form)的更多相关文章

  1. Utils--前台调用后台接口工具类

    Utils--前台调用后台接口工具类 package com.taotao.manage.httpclient; import java.io.IOException; import java.net ...

  2. Java调用第三方接口示范

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程[1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的res ...

  3. Java调用Python脚本工具类

    [本文出自天外归云的博客园] 在网上查了很多方法都不成功,在google上搜到一篇文章,做了一些小修改,能够处理中文输出.提取一个运行python脚本的Java工具类如下: package com.a ...

  4. Java模拟http请求调用远程接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

  5. 【Java】Java调用第三方接口

    Get请求与Http请求 https://www.w3school.com.cn/tags/html_ref_httpmethods.asp HttpClient HTTP 协议可能是现在 Inter ...

  6. java调用第三方接口(转载)

    在很多时候有些别人做过的东西直接拿来用就好了,例如:身份证的信息.某个地区的天气.电话归属地等等. 代码 //import com.alibaba.fastjson.JSONObject; impor ...

  7. 带SSL证书的httpclient 远程接口工具类

    package com.iups.wx.util; import java.io.IOException; import java.io.UnsupportedEncodingException; i ...

  8. java springboot调用第三方接口 借助hutoool工具类 爬坑

    楼主是个后端小白一枚,之前没接触过后端,只学了java基本语法,还是在学校老师教的,学的很浅,什么ssh.ssm框架都没有学,最近在自学spring boot,看书学也看不是很懂,就在b站上看教学视频 ...

  9. Java 调用http接口(基于OkHttp的Http工具类方法示例)

    目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...

随机推荐

  1. Oracle中的位图索引和函数索引

    位图索引 同样的,先说是什么,再说为什么. 上篇我们说过BTREE索引是将数据表的索引列和行号排序后以树状形式存在磁盘中.那位图索引是什么样的呢? 现有如下日志表,有操作类型字段op_type,该字段 ...

  2. 如何使用mongodb(建立原型,连接数据库)

    前两天看了一个朋友做的mongodb数据库,他是自己从某网络大学试听课学的,从可读性和模块区分方面做的比较差,所以写下此文,以作交流. 首先是创建一个modules文件夹,这里面用来存放mongodb ...

  3. 给GRUB添加新的项目

    安装了win10,然后又安装了manjaro,最后又安装了Ubuntu.开机默认就是进入的Ubuntu的grub,然而我比较喜欢manjaro的grub主题.在bios中设置manjaro的引导为默认 ...

  4. P4630 [APIO2018] Duathlon 铁人两项

    思路 圆方树,一个点双中的所有点都可以被经过,所以给圆点赋值-1,方点赋值为圆点个数,统计圆点两两之间的路径权值和即可 代码 #include <cstdio> #include < ...

  5. 基于配置文件的Spring注入

    基于配置文件的Spring注入 1.依赖注入的概述 依赖注入指的是通过Spring配置文件的方式创建对象时,直接通过配置的方式将数据注入到该对象的标量类型属性,并从Spring容器中获取指定对象注入到 ...

  6. lua相关的小知识

    lua的特性 1. 轻量级:一标准的C语言编写原发开放,编译后仅仅100K,占用内存小: 2. 扩展性:Lua提供了非常已于使用的扩展口和机制: 3. 支持面向过程编程和函数式编程 lua的数据类型 ...

  7. 给video添加自定义进度条

    思路: 1.进度条,首先要知道视频的总长度,和视频的当前进度,与其对应的便是进度条的总长度和当前的长度,两者比值相等 2.获取视频的总长度(单位是秒),获取当前进度 3.要实现的功能,首先是进度条根据 ...

  8. (6)tcp-socket

    (1)client端口: import socket# 产生一个socket对象sk = socket.socket()# 建立连接sk.connect( ("127.0.0.1" ...

  9. 【杂】暴力出奇迹,lz水数据

    做了个填涂颜色的题qwq 洛谷上的qwq,然后我就把这道题水过去了qwq(显然这是不对的,我们不能水数据qwq)当然我本身是80分的qwq end-

  10. 微信小程序分享及信息追踪

    我就是个搬用工—来源:https://www.jianshu.com/p/87a75ec2fd53 小程序分享群及信息追踪 需求 页面分享 ​ 小程序页面分享链接增加source参数,值为用户ID加密 ...