使用 Groovy HTTPBuilder POST XML 数据

2024-01-09

我正在尝试使用 HTTPBuilder 类将 XML 数据发布到 URL。目前我有:

def http = new HTTPBuilder('http://m4m:[email protected] /cdn-cgi/l/email-protection/api/orders/create')
http.request(POST, XML) {
body = {
        element1 {
            subelement 'value'
            subsubelement {
                key 'value2'
            }
        }
    }           

    response.success = { /* handle success*/ }
    response.failure = { resp, xml -> /* handle failure */ }
}

经过检查,我发现该请求确实以 XML 作为主体发出。不过我对此有 3 个问题。首先,它省略了经典的 xml 行:

<?xml version="1.0" encoding="UTF-8"?>

它必须位于正文的顶部,其次内容类型也未设置为:

application/xml

最后,对于 XML 中的某些元素,我需要设置属性,例如:

<element1 type="something">...</element1>

但我不知道如何以上面的格式执行此操作。有人知道怎么做吗?或者也许有替代方法?


  1. 添加 XML 声明行插入mkp.xmlDeclaration() http://groovy.codehaus.org/api/groovy/xml/MarkupBuilderHelper.html#xmlDeclaration%28java.util.Map%29在标记的开头。
  2. Passing ContentType.XML http://groovy.codehaus.org/modules/http-builder/apidocs/groovyx/net/http/ContentType.html#XML作为请求的第二个参数设置Content-Type标头至application/xml。我不明白为什么这对你不起作用,但你可以尝试使用一串application/xml反而。
  3. 要设置元素的属性,请在标记生成器中使用以下语法:element1(type: 'something') { ... }

这是一个例子:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.2')
import groovyx.net.http.*

new HTTPBuilder('http://localhost:8080/').request(Method.POST, ContentType.XML) {
    body = { 
        mkp.xmlDeclaration()
        element(attr: 'value') {
            foo { 
                bar()
            } 
        }
    }
}

生成的 HTTP 请求如下所示:

POST / HTTP/1.1
Accept: application/xml, text/xml, application/xhtml+xml, application/atom+xml
Content-Length: 71
Content-Type: application/xml
Host: localhost:8080
Connection: Keep-Alive
Accept-Encoding: gzip,deflate

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

使用 Groovy HTTPBuilder POST XML 数据 的相关文章

随机推荐

  • 扩展基元而不对其进行原型设计

    我正在开发一个相当丑陋的库 它可以让你做一些奇怪的事情 有了图表 您可以以链式样式映射一组集合 并且当您更改 整个系统中要改变的值 当最终类型是 JS 原语时 问题就出现了 就我而言 在使用值和对象制作图表后 我可以执行以下操作 CHAIN
  • 动态添加项目到边框视口

    我想首先创建一个空视口 布局 边框 然后向其中添加项目 最后渲染并显示 但是当我创建视口元素时 它抛出一个错误 说 未捕获的类型错误 无法读取未定义的属性 flex 这是我的代码
  • 通过adb授予PACKAGE_USAGE_STATS权限

    adb shell pm grant x y z android permission PACKAGE USAGE STATS 这是授予的命令PACKAGE USAGE STATS通过 adb 获得权限 但只有当我从未在本机设置中切换此权限
  • 如何使用react-router-dom创建受保护的路由?

    如何创建受保护的路由react router dom并将响应存储在 localStorage 中 以便用户下次尝试打开时可以再次查看其详细信息 登录后 他们应该重定向到仪表板页面 所有功能都添加到 ContextApi 中 代码沙箱链接 C
  • webpack "--watch" 与 "--hot" :有什么区别?

    使用有什么区别 webpack watch and webpack dev server hot thanks 根据 webpack 文档 https webpack github io docs tutorials getting sta
  • 仅 Vault Enterprise 的 Vault Sidecar 注入器权限被拒绝

    我正在尝试探索Vault Enterprise 但当我使用Vault Enterprise时 Sidecar的权限被拒绝 但当我尝试使用本地Vault服务器时 似乎工作正常 这是包含本地保管库的工作示例的存储库保险库边车注射器应用程序 ht
  • 使用 python 3 代码在 CSV 文件中查找特定标头

    现在我有Python 3代码 它获取CSV文件中的一列数据 根据空格将每个单元格中的短语分隔成单独的单词 然后将数据导出回新的CSV文件中 我想知道是否有一种方法可以告诉 python 仅将格式化代码应用于具有特定标题的特定列 这是我的源数
  • 如何在C#中获取Table的innerHTML

    HtmlTable baseCalendar new HtmlTable HtmlTableRow calendarRow new HtmlTableRow HtmlTableCell calendarCell new HtmlTableC
  • 根据几个条件计算总计

    假设我有一个这样的表 id col1 col2 col3 1 a 1 k1 2 a 2 k2 3 a 3 k3 4 b 3 k4 现在 我想要所有行的列 col2 的总和 其中 col1 与 id 1 的行中的 col1 相同 所以那就是1
  • 如何在 Django 模板中访问外键表的数据?

    我想将外键表的数据访问到 django 模板中 我的代码如下 class TutorialCategory models Model tutorial category models CharField max length 200 cat
  • Visual Studio Community 2019 在为 MATLAB MEX 文件的性能分析器“准备数据”期间挂起

    我正在尝试使用 Visual Studio Community Edition 2019 分析 MEX mexw64 文件 该 MEX 文件是根据我们编写的 C 文件创建的 并使用 GCC 和 G 进行编译 并启用了调试符号 如果重要的话
  • 如何在 if 语句中回显 PHP 和 HTML

    我有一个 if 语句 只需在 result37 ncrteam 的值时显示一些代码 但是我如何回显该 HTML 和 PHP 代码 回声 不工作并回显 也不行 这是我的代码 Status br
  • Docker 容器之间的 HTTP 请求

    我正处于学习如何使用 Docker 的第一阶段 所以我正在尝试一些基本的东西 我创建了两个需要通过 HTTP 请求交换数据的 Node Express 服务 My docker compose yml file networks isola
  • Android - Firebase 快速入门电子邮件/密码身份验证演示不起作用

    因此 这里有几个类似的问题 但没有一个对我来说有可行的解决方案 我正在使用从 Github 下载的 Quickstart 演示 今天下载了 我没有更改演示代码中的任何内容 我已经解决了一些常见错误 根据我所读到的内容 我在 Firebase
  • Python:列表中的每个元素占用多少空间?

    我需要一个非常大的列表 并且正在尝试弄清楚我可以将其设置为多大 以便它仍然适合 1 2GB 的 RAM 我正在使用 64 位 x86 64 上的 CPython 实现 编辑 感谢 bua 的回答 我已经填写了一些更具体的答案 空间 内存 使
  • 将字符串传递给 sass mixin 中的变量

    我有一个非常简单的 mixin 如下所示 mixin global variable name font size variable name font size 我之前定义了变量 input font size 并将其按以下格式传递到 m
  • 如何使用java 10在maven中添加javafx依赖项

    我切换到ubuntu 18 04 其中默认 jvm 为 java 10 现在我使用 javafx 的应用程序无法再编译 cannot find symbol ERROR symbol class ObservableMap 我尝试向 mav
  • 当您输入新问题时,Stack Overflow 如何显示类似问题?

    这是 Stack Overflow 和在这个平台上运行的其他网站做得很好的事情之一 一旦您尝试创建新问题 就会显示一个小窗口 其中显示其他类似的问题 这是怎么做到的 可以使用什么技术来实现这一点 卢森 狮身人面像 StackOverflow
  • CSS 边框半径,但像素化

    我想在 CSS 中创建一个圆形边框 放大时看起来像素化 这是圆形边框近距离的样子 https i stack imgur com T9Q2g jpg https i stack imgur com T9Q2g jpg 这就是我试图让它看起来
  • 使用 Groovy HTTPBuilder POST XML 数据

    我正在尝试使用 HTTPBuilder 类将 XML 数据发布到 URL 目前我有 def http new HTTPBuilder http m4m email protected cdn cgi l email protection a