You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Karate 0.5.0版本如何禁用XML转JSON格式转换?

解决Karate 0.5.0中XML自动转JSON的问题

在Karate 0.5.0版本里,确实默认会把XML请求先解析成JSON结构,再序列化回XML发送,这对只接受原生XML格式的服务来说很容易出问题。你可以通过以下两种方式禁用这个自动转换:

1. 针对单个请求设置(推荐,更灵活)

直接在请求中指定Content-Type为application/xml,并用text()包裹你的XML内容,这样Karate就会原样发送XML,不会做任何解析转换:

Feature: 测试XML格式服务
  Scenario: 发送原生XML请求
    Given url 'http://your-target-service.com/api/endpoint'
    And header Content-Type = 'application/xml'
    # 用三个单引号包裹多行XML内容,保留原始格式
    And request text '''
    <OrderRequest>
      <OrderId>ORD-7890</OrderId>
      <Product>TestProduct</Product>
      <Quantity>5</Quantity>
    </OrderRequest>
    '''
    When method post
    Then status 200

如果你的XML内容保存在外部文件中,也可以用read()读取后配合text()使用:

And request text read('test-data/order-request.xml')

2. 全局配置(禁用所有XML自动解析)

如果你的所有测试用例都需要发送原生XML,可以在karate-config.js中添加全局配置,直接禁用XML的自动解析功能:

function fn() {
  // 全局禁用XML自动解析
  karate.configure('parseXml', false);
  // 其他全局配置项...
  return { /* 你的全局配置对象 */ };
}

设置后,所有XML请求都会被当作纯文本处理,无需每个请求都加text(),但要记得给每个请求正确设置Content-Type为application/xml。

小提醒

  • 禁用自动转换后,要确保你的XML格式完全符合服务要求,Karate不会再帮你校验或调整结构
  • Karate 0.5.0是比较老旧的版本,虽然上述方法能解决问题,但如果后续有机会,建议升级到新版本(比如1.x或2.x),新版本对XML的处理更灵活,也有更多实用配置选项

内容的提问来源于stack exchange,提问作者user1053031

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:37:19