java 发送json_Java 用HTTP的方式发送JSON报文请求

2023-05-16

前言:

项目调用第三方接口时,通常是用socket或者http的通讯方式发送请求:http 为短连接,客户端发送请求都需要服务器端回送响应,请求结束后,主动释放链接。Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。下面介绍HTTP的方式发送和接收JSON报文。

需求:

用HTTP的方式,向URL为10.10.10.110:8888地址发送json报文,返回的结果也是json报文。

d4afb73e851145e1b80a2e390538e132.png

主要代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 String resp= null;

2 JSONObject obj = new JSONObject();

3 obj.put("name", "张三");

4 obj.put("age", "18");

5 String query = obj.toString();

6 log.info("发送到URL的报文为:");

7 log.info(query);

8 try {

9 URL url = new URL("http://10.10.10.110:8888"); //url地址

10

11 HttpURLConnection connection = (HttpURLConnection) url.openConnection();

12 connection.setDoInput(true);

13 connection.setDoOutput(true);

14 connection.setRequestMethod("POST");

15 connection.setUseCaches(false);

16 connection.setInstanceFollowRedirects(true);

17 connection.setRequestProperty("Content-Type","application/json");

18 connection.connect();

19

20 try (OutputStream os = connection.getOutputStream()) {

21 os.write(query.getBytes("UTF-8"));

22 }

23

24 try (BufferedReader reader = new BufferedReader(

25 new InputStreamReader(connection.getInputStream()))) {

26 String lines;

27 StringBuffer sbf = new StringBuffer();

28 while ((lines = reader.readLine()) != null) {

29 lines = new String(lines.getBytes(), "utf-8");

30 sbf.append(lines);

31 }

32 log.info("返回来的报文:"+sbf.toString());

33 resp = sbf.toString();

34

35 }

36 connection.disconnect();

37

38 } catch (Exception e) {

39 e.printStackTrace();

40 }finally{

41 JSONObject json = (JSONObject)JSON.parse(resp);

42 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

网上还有一种拼json发送报文的方式,也把代码分享出来:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 String resp = null;

2 String name = request.getParameter("userName");

3 String age = request.getParameter("userAge");

4 String query = "{\"name\":\""+name+"\",\"age\":\""+age+"\"}";

5

6 try {

7 URL url = new URL("http://10.10.10.110:8888"); //url地址

8

9 HttpURLConnection connection = (HttpURLConnection) url.openConnection();

10 connection.setDoInput(true);

11 connection.setDoOutput(true);

12 connection.setRequestMethod("POST");

13 connection.setUseCaches(false);

14 connection.setInstanceFollowRedirects(true);

15 connection.setRequestProperty("Content-Type","application/json");

16 connection.connect();

17

18 try (OutputStream os = connection.getOutputStream()) {

19 os.write(query.getBytes("UTF-8"));

20 }

21

22 try (BufferedReader reader = new BufferedReader(

23 new InputStreamReader(connection.getInputStream()))) {

24 String lines;

25 StringBuffer sbf = new StringBuffer();

26 while ((lines = reader.readLine()) != null) {

27 lines = new String(lines.getBytes(), "utf-8");

28 sbf.append(lines);

29 }

30 log.info("返回来的报文:"+sbf.toString());

31 resp = sbf.toString();

32

33 }

34 connection.disconnect();

35

36 } catch (Exception e) {

37 e.printStackTrace();

38 }finally{

39 JSONObject json = (JSONObject)JSON.parse(resp);

40 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

两种方式其实都是一样的。写得不对的地方,往各位撸过的大拿指正~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 发送json_Java 用HTTP的方式发送JSON报文请求 的相关文章

  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • 如何强制控制器/操作使用 JsonValueProvider

    再会 我正在使用 ASP NET MVC 3 其中JsonValueProvider http haacked com archive 2010 04 15 sending json to an asp net mvc action met
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 为什么我在 Mac 上看到“java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int)accessibl

    我已经在工作中愉快地构建代码好几天了 但突然我的一个项目 不是全部 失败并出现此错误消息 看看下面的答案吧 我是如何修复它的 起初我用谷歌搜索 看到很多有这个问题的人正在使用 Java 16 但我认为 错误 我正在使用 Java 11 因为
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr

随机推荐