Karate 当post';内容类型';是application/x-www-form-urlencoded和*form字段param={<;这是一个json对象>;}

Karate 当post';内容类型';是application/x-www-form-urlencoded和*form字段param={<;这是一个json对象>;},karate,Karate,当我发布一个API请求时,请求失败,该API的标题内容类型为“application/x-www-form-urlencoded”;charset=UTF-8'和post body是'param={这是一个json对象}' 像这样的curl请求是有效的 卷曲'-H'曲奇:ACMETMP=fe35925f-a243-4be9-8e73-60c461ef9bd3;JSESSIONID=47A43F4988F232CC7B53F6CF30B954F6;SESSION=e580c2c7-bf4b-45e

当我发布一个API请求时,请求失败,该API的标题内容类型为“application/x-www-form-urlencoded”;charset=UTF-8'和post body是'param={这是一个json对象}'

像这样的curl请求是有效的

卷曲'-H'曲奇:ACMETMP=fe35925f-a243-4be9-8e73-60c461ef9bd3;JSESSIONID=47A43F4988F232CC7B53F6CF30B954F6;SESSION=e580c2c7-bf4b-45e6-93fc-de6f79854346'-H'来源:'-H'接受编码:gzip,deflate'-H'接受语言:zh CN,zh;q=0.9'-H'用户代理:Mozilla/5.0(Macintosh;英特尔Mac OS X 10_14_3)AppleWebKit/537.36(KHTML,如Gecko)Chrome/74.0.3729.131 Safari/537.36'-H'内容类型:application/X-www-form-urlencoded;charset=UTF-8'-H'Accept:application/json,text/javascript,/;q=0.01'-H'Referer:'-H'X-request-With:XMLHttpRequest'-H'连接:保持活动状态'--数据'参数=%7B%22cityid%22%3A%222091afc3-bcd6-46d9-8033-3548ad10933b%22%2C%22areaid%22%3A%222d09f5e5-a07d-445c-9d8a-51eb436699a8%22%2C%22hosid%22%3A%220f226b63-58ad-44d7-bf23-25d0345276e1%22%2C%22%22deptid%22%3A%2291CF5-63ca-4b95-87c4-9F322%22%22%22%22%22压缩条码,'

它也适用于邮递员请求,但在空手道中失败

Scenario: 样本登记

    Given path 'iEhr/PersonSample'
    And header Content-type = 'application/x-www-form-urlencoded; charset=UTF-8'

    * cookies { JSESSIONID: '#(jsessionID)',SESSION: '#(sessionID)', ACMETMP: '#(acmetmpID)'}

    And form fields param = {"cityid":"2091afc3-bcd6-46d9-8033-3548ad10933b","areaid":"2d09f5e5-a07d-445c-9d8a-51eb436699a8","hosid":"0f226b63-58ad-44d7-bf23-25d0345276e1","deptid":"91c176f5-63ca-4b95-87c4-9f311864ff9b","barcode":"1000000000","mothername":"manual-mother1","pregweek":"21", and so on}

    When method post
    Then status 200
    * print response
'和表单字段param={这是一个json对象}'

这句话应该行得通,但对我们来说失败了

空手道失败是什么意思? 响应代码与空手道不同,这是与邮递员一起工作时的预期结果

邮递员

空手道

18:14:09.437 request:
1 > POST http://localhost:7272/Acme/iEhr/PersonSample
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 899
1 > Content-Type: application/x-www-form-urlencoded; charset=UTF-8
1 > Cookie: ACMETMP=d22c0d9a-b98b-4f6f-9e42-2f9bdffa22c8; JSESSIONID=09268B9F4CA0C15AE3FFB1A26BE424ED; SESSION=2baafdac-38d6-43d0-ac5c-d39e2b29fa48
1 > Host: localhost:7272
1 > User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_211)
cityid=2091afc3-bcd6-46d9-8033-3548ad10933b&areaid=2d09f5e5-a07d-445c-9d8a-51eb436699a8&hosid=0f226b63-58ad-44d7-bf23-25d0345276e1&deptid=91c176f5-63ca-4b95-87c4-9f311864ff9b&barcode=1000000000&mothername=manual-mother1&pregweek=21&pregday=1&midentitycard=&birthday=2018-10-01+00%3A00&collectdate=2019-05-15+14%3A38&personsex=1&personweight=4000&address=manual-testaddress1&mobile=15397006044&collectperson=&samplequality=1&borntype=1&linkman=&fidentitycard=&labitem=PHE&sampletype=1&btn=&isfee=0&personremark=&telephone=&bednumber=&labstring=&collectnumber=&freecode=&dhosid=0f226b63-58ad-44d7-bf23-25d0345276e1&reviewtype=&diagnosticstatus=&centerid=bb717701-10de-47ee-b49e-693261c6df22&nowdeptid=07eeec75-079b-4fa9-93cf-c45ddc9a87b9&operator=%E9%BB%84%E5%86%88%E5%B8%82%E5%A6%87%E5%B9%BC%E4%BF%9D%E5%81%A5%E9%99%A2&labitems=PHE&pagecode=sampleadd&modifydetail=%E6%A0%B7%E6%9C%AC%E5%BD%95%E5%85%A5

18:14:09.557 response time in milliseconds: 120.12
1 < 200
1 < Accept-Charset: big5, big5-hkscs, cesu-8, euc-jp, euc-kr, gb18030, gb2312, gbk, ibm-thai ...... and so on
1 < Content-Length: 52
1 < Content-Type: text/plain;charset=UTF-8
1 < Date: Wed, 15 May 2019 10:14:09 GMT
1 < X-Application-Context: Acme.jc.test:dev:7272
[{"code":-90018,"result":"(错误-90018)失败!"}]
18:14:09.437请求:
1>职位http://localhost:7272/Acme/iEhr/PersonSample
1>接受编码:gzip,deflate
1>连接:保持活动状态
1>内容长度:899
1>内容类型:application/x-www-form-urlencoded;字符集=UTF-8
1>Cookie:ACMETMP=d22c0d9a-b98b-4f6f-9e42-2f9bdffa22c8;JSESSIONID=09268B9F4CA0C15AE3FFB1A26BE424ED;会话=2baafdac-38d6-43d0-ac5c-d39e2b29fa48
1>主机:本地主机:7272
1>用户代理:Apache HttpClient/4.5.5(Java/1.8.0_211)
cityid=2091afc3-bcd6-46d9-8033-3548ad10933b&areaid=2d09f5e5-a07d-445c-9d8a-51eb436699a8&hosid=0f226b63-58ad-44d7-bf23-25d0345276e1&deptid=91c176f5-63ca-4b95-87c4-9f311864ff9b&barcode=100000000&mothername=manual-mother1&pregweek=21&pregday=1&pregday=1&BirtyCard=2018-10-01+CollectyCard=2019&Date=15%个人体重加总重量=40%ress=manual-testaddress1&mobile=15397006044&collectperson=&samplequality=1&borntype=1&linkman=&FidenticCard=&labitem=PHE&sampletype=1&btn=&isfee=0&personremark=&telephone=&bednumber=&labstring=&collectnumber=&freecode=&dhosid=0f226b63-58ad-44d7-bf23-25d0345276e1&reviewtype=&diagnosticstatus=¢erid=bb717701-10de-479E-Dep326C622=07eeec75-079b-4fa9-93cf-c45ddc9a87b9和操作员=%E9%BB%84%E5%86%88%E5%B8%82%E5%A6%87%E5%B9%BC%E4%BF%9D%E5%81%A5%E9%99%A2和labitems=PHE和pagecode=相同的详细信息=%E6%A0%B7%E6%9C%AC%E5%BD%95%E5%A5
18:14:09.557响应时间(毫秒):120.12
1 < 200
1<接受字符集:big5、big5香港增补字符集、cesu-8、euc jp、euc kr、gb18030、gb2312、gbk、ibm泰国。。。。。。等等
1<内容长度:52
1<内容类型:文本/纯文本;字符集=UTF-8
1<日期:2019年5月15日星期三10:14:09 GMT
1
你能试试这个吗

Scenario: 样本登记 
 Given path 'iEhr/PersonSample' 
 * cookies { JSESSIONID: '#(jsessionID)',SESSION: '#(sessionID)', ACMETMP: '#(acmetmpID)'} 
 And def ffParams = {"param" : {"cityid":"2091afc3-bcd6-46d9-8033-3548ad10933b","areaid":"2d09f5e5-a07d-445c-9d8a-51eb436699a8","hosid":"0f226b63-58ad-44d7-bf23-25d0345276e1","deptid":"91c176f5-63ca-4b95-87c4-9f311864ff9b","barcode":"1000000000","mothername":"manual-mother1","pregweek":"21"}} 
 And form fields ffParams
 When method post 
 Then status 200 
 * print response
默认情况下,表单字段是url编码的,只是不需要在标题中显式地提及它

And form field param = {"cityid":"2091afc3-bcd6-46d9-8033-3548ad10933b","areaid":"2d09f5e5-a07d-445c-9d8a-51eb436699a8","hosid":"0f226b63-58ad-44d7-bf23-25d0345276e1","deptid":"91c176f5-63ca-4b95-87c4-9f311864ff9b","barcode":"1000000000","mothername":"manual-mother1","pregweek":"21","pregday":"1","midentitycard":"","birthday":"2018-10-01 00:00" ...... and so on }
我换了这个,现在可以用了。
我被空手道中的关键字“param”和我们的产品代码使用的关键字“param”误导了。

如果你发送的是json,那么内容类型标题必须是
application/json
空手道中的失败是什么意思?你能提到准确的失败日志吗?谢谢你的回答。我已经在下面重新编辑了我的问题。非常感谢但是,您的回复对我们不起作用。“param”是API中的一个必要字段,API的日志在我们的产品代码中是这样写的。我已经在下面重新编辑了我的问题。我的错我没有注意到您使用的是
表单字段
而不是
表单字段
作为单个值。但我想知道我的回答怎么会不起作用已将
表单字段
param
一起用作提供的JSON中的键。不管怎样,这很有效!请在一段时间后将您的答案标记为已接受。