在空手道 DSL 中,如何为有效的 POST 请求解析不受支持的媒体类型
In Karate DSL, How do I resolve an Unsupported Media Type for a valid POST REQUEST
所以我使用空手道中的功能创建了一个动态 POST 请求。我手动测试了新创建的请求,它确实 return 了 200。但是,当 运行 通过空手道请求时,我得到了 415 不受支持的媒体类型。
POST 请求:
{
"content": [
{
"assetId": "273108817",
"country" : "US",
"sourceSystemCode" : "GE_Clarify",
"serviceRequestCode" : "Karate-Insert: 157264280",
"serviceRequestTypeCode" : "servicerequestcorrective",
"serviceRequestStatusCode" : "Started",
"requester" : "Karate,DSL",
"problem" : "Submitted Using Karate",
"submissionTimestamp" : null,
"sourceUpdateDate": "2017-09-13T15:53:51.597Z",
"completionDate" : null,
"dueDate" : null,
"availabilityDate" : null,
"remotely" : "0",
"assetAvailability" : "Up",
"facilityCode" : "US_294629"
}
]
}
空手道语法
场景:提交新的服务请求POST:
def ServiceRequestPostTemplate = 读取('classpath:testsuite/testdata/ServiceRequestServiceTemplate.json')
* 替换 ServiceRequestPostTemplate
|代币 |价值 |
|资产编号 |资产表资产 ID |
|国家 |国家 |
|来源系统代码 |来源系统代码 |
|服务请求代码 | 'Karate-Insert: ' + 新服务请求代码 |
给定路径'serviceRequests/'
并请求 ServiceRequestPostTemplate
- header 授权 = 'Bearer ' + Token
当方法 post
然后状态200
下面附件中的错误消息。请注意,我通过 Swagger UI 手动检查了请求,一切正常。我还在 Karate 中将它作为硬编码变量传递进来并且它工作正常。但是,使用 'table' 功能似乎会改变媒体类型。
您还需要使用 header 关键字添加内容类型,如下所示
给定路径'some/path'
并请求{一些:'data'}
和header接受='application/json'
当方法post
然后状态200
希望对您有所帮助。
当您使用 replace
时,类型将转换为字符串 - 文档中明确提到了这一点。
因此您有两个选择:a) type-cast 将替换结果返回 JSON b) 手动设置 Content-Type
header。
希望对您有所帮助!
所以我使用空手道中的功能创建了一个动态 POST 请求。我手动测试了新创建的请求,它确实 return 了 200。但是,当 运行 通过空手道请求时,我得到了 415 不受支持的媒体类型。
POST 请求:
{
"content": [
{
"assetId": "273108817",
"country" : "US",
"sourceSystemCode" : "GE_Clarify",
"serviceRequestCode" : "Karate-Insert: 157264280",
"serviceRequestTypeCode" : "servicerequestcorrective",
"serviceRequestStatusCode" : "Started",
"requester" : "Karate,DSL",
"problem" : "Submitted Using Karate",
"submissionTimestamp" : null,
"sourceUpdateDate": "2017-09-13T15:53:51.597Z",
"completionDate" : null,
"dueDate" : null,
"availabilityDate" : null,
"remotely" : "0",
"assetAvailability" : "Up",
"facilityCode" : "US_294629"
}
]
}
空手道语法
场景:提交新的服务请求POST:
def ServiceRequestPostTemplate = 读取('classpath:testsuite/testdata/ServiceRequestServiceTemplate.json') * 替换 ServiceRequestPostTemplate |代币 |价值 | |资产编号 |资产表资产 ID | |国家 |国家 | |来源系统代码 |来源系统代码 | |服务请求代码 | 'Karate-Insert: ' + 新服务请求代码 |
给定路径'serviceRequests/' 并请求 ServiceRequestPostTemplate
- header 授权 = 'Bearer ' + Token 当方法 post 然后状态200
下面附件中的错误消息。请注意,我通过 Swagger UI 手动检查了请求,一切正常。我还在 Karate 中将它作为硬编码变量传递进来并且它工作正常。但是,使用 'table' 功能似乎会改变媒体类型。
您还需要使用 header 关键字添加内容类型,如下所示
给定路径'some/path'
并请求{一些:'data'}
和header接受='application/json'
当方法post
然后状态200
希望对您有所帮助。
当您使用 replace
时,类型将转换为字符串 - 文档中明确提到了这一点。
因此您有两个选择:a) type-cast 将替换结果返回 JSON b) 手动设置 Content-Type
header。
希望对您有所帮助!