мой запрос не выполнен, когда сообщение 'content-type' имеет вид application / x-www-form-urlencoded и * поле формы param = {} - PullRequest
1 голос
/ 15 мая 2019

Запрос не выполняется, когда я отправляю запрос API, тип содержимого заголовка которого равен 'application / x-www-form-urlencoded;charset = UTF-8 ', а post post это' param = {это объект json} '

Запрос curl подобен этому, он работает.

curl 'http://localhost:7272/Acme/iEhr/PersonSample' -H' Cookie: ACMETMP = fe35925f-a243-4be9-8e73-60c461ef9bd3;JSESSIONID = 47A43F4988F232CC7B53F6CF30B954F6;СЕССИЯ = e580c2c7-bf4b-45e6-93fc-de6f79854346 '-H' Происхождение: http://localhost:7272' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN, zh; q = 0,9'-H' Пользовательский агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 74.0.3729.131 Safari / 537.36 '-H' Тип содержимого: application / x-www-форма-urlencoded;charset = UTF-8 '-H' Принять: application / json, text / javascript, / ;q = 0,01 '-H' Referer: http://localhost:7272/route/sampleadd' -H 'X-Requested-With: XMLHttpRequest' -H 'Соединение: keep-alive' --data 'param =% 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% 22deptid% 22% 3A% 2291c176f5-63ca-4b95-87c4-9f311864ff9b% 22% 2C% 22 штрих-код% 22% 3A% 221000000000% 22% 2C ...... - сжатый

он также работает с запросом почтальона, но не работает с каратэ

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)失败!"}]

Ответы [ 2 ]

1 голос
/ 15 мая 2019
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», используемое нашим кодом продукта.

1 голос
/ 15 мая 2019

Можете ли вы попробовать это,

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, нет необходимости явно упоминать это в заголовке

...