使用 JSON 对象作为负载向 REST API 发出 POST 请求

2023-12-14

我正在尝试使用具有 JSON 负载的 POST 请求从 REST API 获取 JSON 响应(应在发送前转换为 URL 编码文本)。我已经按照一些教程来实现该过程,但收到状态代码 400 的错误。我可能没有对给定的 JSON 字符串进行编码或丢失了某些内容。请帮我解决这个问题。谢谢。

这是我的代码

    try {
        URL url = new URL("https://appem.totango.com/api/v1/search/accounts/health_dist");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("app-token", "1a1c626e8cdca0a80ae61b73ee0a1909941ab3d7mobile+testme@totango.com");
        conn.setRequestProperty("Accept", "application/json, text/javascript, */*; q=0.01");
        conn.setRequestProperty("X-Requested-With","XMLHttpRequest");

        String payload = "{\"terms\":[{\"type\":\"totango_user_scope\",\"is_one_of\":[\"[email protected]\"]}],\"group_fields\":[{\"type\":\"health\"}]}";

        OutputStream os = conn.getOutputStream();
        os.write(payload.getBytes());
        os.flush();

        if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + conn.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }
        conn.disconnect();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

在关注许多帖子和教程超过 24 小时后,我发现我没有正确发送 URL 参数。我还了解到 REST API 调用使用ApacheHttp客户端相对来说比较容易。我解决了 HTTP 错误代码 400 并从服务器获取了响应。这是我的问题的工作代码。

        try {
            httpClient = HttpClients.createDefault();
            httpPost = new HttpPost("https://appem.totango.com/api/v1/search/accounts/health_dist");

            List<NameValuePair> headers = new ArrayList<NameValuePair>(); //ArrayList to store header parameters
            List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); //ArrayList to store URL parameters

            urlParameters.add(new BasicNameValuePair("query","{\"terms\":[{\"type\":\"totango_user_scope\",\"is_one_of\":[\"[email protected]\"]}],\"group_fields\":[{\"type\":\"health\"}]}"));
            headers.add(new BasicNameValuePair("app-token", "1a1c626e8cdca0a80ae61b73ee0a1909941ab3d7mobile+testme@totango.com"));
            headers.add(new BasicNameValuePair("Accept", "application/json, text/javascript, */*; q=0.01"));
            headers.add(new BasicNameValuePair("X-Requested-With", "XMLHttpRequest"));
            httpPost.setEntity(new UrlEncodedFormEntity(urlParameters));

            for (NameValuePair h : headers)
            {
                httpPost.addHeader(h.getName(), h.getValue());
            }

            response = httpClient.execute(httpPost);

            if (response.getStatusLine().getStatusCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + response.getStatusLine().getStatusCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader(
                    (response.getEntity().getContent())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

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

使用 JSON 对象作为负载向 REST API 发出 POST 请求 的相关文章

  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • GitHub Actions:如何将 toJSON() 结果传递给 shell 命令

    因此 我正在与 Github Actions 合作进行端到端测试 我正在查看的设置是让一项作业检索要测试的 url 列表 而我的第二项作业使用该列表创建一个矩阵并测试所有这些 我的问题是 当我实际运行测试脚本时 必须从命令行完成 因为我使用
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 越狱iOS设备的应用程序:一致的后台操作

    我是名为 AirFloat 的 Cydia 调整项的作者 实现 AirPlay 音频协议 以前称为 AirTunes 的应用程序 可以传输音频to您的 iOS 设备 AirFloat 最初是一个 App Store 应用程序 直到被 App
  • iPhone X 上停用时 applicationDidBecomeActive 触发

    还有其他人遇到麻烦吗applicationDidBecomeActive错误地开火失活新 iPhone X 上的应用程序是什么 这是我的测试应用程序 class ViewController UIViewController require
  • Node MSSQL - 如何使用内置的 SQL 注入保护

    我正在研究 Node 的 MSSQL 模块中内置的 SQL 注入保护 https www npmjs com package mssql injection 但我并没有完全理解他们如何清理查询值的示例 我猜是request input my
  • Terraform 将 SSL 证书绑定到 Azure WebApp

    我最近一直在尝试使用 Azure 中的 Terraform 将域和 SSL 证书绑定到 Web 应用程序 我在这方面没有运气 而且文档有点混乱 地面上很简单 我在制定计划时遇到的错误是 Error parsing subscriptions
  • JavaScript 中的继承

    当我使用原型在 Javascript 中实现继承时 我遇到了一个奇怪的错误 我想知道是否有人可以解释这一点 在下面的代码中 我正在尝试从父类派生子类 parent class function byref if parent class p
  • 为什么使用ByRef时变量应该被赋值为“.Value”?

    有什么区别 A Something and A Value Something 我发现这仅在以下情况下才有效 Value用来 function main A Original A B Original B SetByRef1 ref A S
  • 在 Joomla 中添加特定于页面的 javascript 或 CSS

    如何仅在 Joomla 的某篇文章中包含 javascript 或 CSS 文件 我有一篇文章需要 jQuery UI 和相关主题 由于它没有在任何其他页面上使用 因此我只需要在这篇特定的文章中使用它 添加必要的
  • 为什么我的应用程序显示我正在请求通讯录权限?

    我有一个表盘应用程序 显示我正在请求联系人权限 但我没有 我不明白这是为什么 我有应用程序内结算功能 并且可以访问 Google Fit 数据 以及 Google Analytics 以下是我的清单中的权限列表
  • 如何基于现有文件数据库创建具有架构的内存数据库

    我有一个现有的数据库 其结构在整个应用程序中使用 数据库的实例会定期轮换 我有一个数据库文件template sqlite它用作所有新创建的数据库的模板 我想使用它 而不是创建脚本 这样我只需维护一个文件 即空数据库模板本身 我想基于该模板
  • 什么标准调用实际上是宏

    我问了一个问题here about assert它在标准中作为宏而不是函数实现 这给我带来了一个问题 因为这样的方式assert从接受参数的角度来看 它似乎是一个函数 assert true 因此我尝试将其用作 std assert tru
  • Array.fill 和 for 循环创建数组有什么区别[重复]

    这个问题在这里已经有答案了 我正在使用 React js 创建一个地下城爬行游戏 并使用 Array fill 0 初始化棋盘 但是当我在二维数组中设置一个元素时 它将整个数组 列 设置为 player 而不是单一元素 我还有一个creat
  • VFP OleDb 的 Sql 参数化语法错误

    我正在尝试为 DBF 文件创建 SQL 参数化更新命令 Visual Fox Pro 我不知道为什么 但我在 DbCommand ExecuteNonQuery 上有一个 语法错误 异常错误消息是 语法错误 我没有任何额外的信息 strin
  • 如何查找 .NET 命名空间的程序集名称,例如 Microsoft.WindowsAzure.ServiceRuntime

    我有一个一般性问题和具体示例 根据 Stack Overflow 上有关命名空间程序集的所有类似问题 这应该很容易 最常见的答案是在问题中找到的我如何知道导入特定 NET 命名空间时要包含哪些引用 所有 MSDN 文档页面都提到命名空间和程
  • 循环,每次迭代仅在 jQuery 延迟之后发生,何时/然后可能没有递归?

    我想在循环中调用 jQuery 延迟函数 但每次迭代都应该等待上一个迭代使用延迟函数完成when function num of iterations var arr for var i 1 i lt num of iterations i
  • 将鼠标悬停在文本上时显示工具提示

    我想创建扩展 当我将鼠标悬停在文本上时 该扩展允许显示自定义消息 例如 test text 应该给出工具提示 OK 而不是当前的 ITrackin 我试着跟随https learn microsoft com en us visualstu
  • Visual Studio - 不同的断点集

    在 Visual Studio 2015 及更高版本 中 是否可以拥有多组断点 我有几个场景 我需要调试 但对于每个场景 我希望有不同的断点集 手动启用 禁用它们非常耗时 您可以从断点窗口导出和导入断点 然后根据需要导入它们 或者 如果您不
  • 有没有办法通过 .onLongPressGesture 将第三个切换选项添加到开/关状态?

    我已经设置了一个切换开关 如下图所示 可以打开 关闭图像或通过 失败 我正在尝试使用长按手势向图像添加第三种状态 这会将图像变成带有斜杠图标的灰色 我已经在文本元素中实现了这一点 因为 at is 没有 bool 条件 但经过多次搜索后无法
  • 创建未刷新的文件输出缓冲区

    我正在尝试解决在 Linux 上运行的几个不同语言的程序中未刷新的文件 I O 缓冲区出现的问题 刷新缓冲区的解决方案很简单 但是未刷新缓冲区的问题是随机发生的 我对如何创建 重现 和诊断这种情况感兴趣 而不是寻求可能导致这种情况的帮助 这
  • 使用 Selenium WebDriver 进行 PrimeFaces 文件上传测试

    我已经成功测试了 fileUploadSimplehttp www primefaces org showcase ui fileUploadSimple jsf使用 webElement sendKeys 方法 它不适用于自动上传 有没有
  • 使用 JSON 对象作为负载向 REST API 发出 POST 请求

    我正在尝试使用具有 JSON 负载的 POST 请求从 REST API 获取 JSON 响应 应在发送前转换为 URL 编码文本 我已经按照一些教程来实现该过程 但收到状态代码 400 的错误 我可能没有对给定的 JSON 字符串进行编码