Автоматический синтаксический анализ тела ответа JSON не работает
Я использую httpbuilder-ng v1.0.4 со сценарием Groovy, который запрашивает у jFrog Artifactory RestAPI метаданные о заданном двоичном файле. Выполняю 3 запроса GET.
Первый, кажется, автоматически распознается как JSON и возвращает LazyMap для "тела". Я не делал ничего особенного, чтобы заставить его анализировать ответ и возвращать LazyMap.
Второй и третий запросы возвращают "тело" в виде байта [], и мне нужно вручную принудительно передать его через JsonSlurper/XmlSlurper, чтобы он обрабатывался как карта JSON или XMl.
Я не могу понять, почему к ним относятся иначе.
Любые мысли будут оценены.
Первый запрос:
def artifactRequest = HttpBuilder.configure {
ignoreSslIssues execution
request.uri = ArtifactoryConstants.BASE_URL
}
//Get latest artifact version
artifactRequest.get {
request.uri.path = ArtifactoryConstants.VERSION_SEARCH_PATH
request.accept = JSON[0]
request.headers['X-JFrog-Art-Api'] = JFROG_API_KEY
request.uri.query.put("g", POM_GROUPID)
request.uri.query.put("a", POM_ARTIFACTID)
request.uri.query.put("v", POM_VERSION)
request.uri.query.put("repos", ArtifactoryConstants.REPO_GROUP)
if (CLASSIFIER) { //Optional
request.uri.query.put("c", CLASSIFIER)
}
response.success { from, body ->
//body type = LazyMap
...
}
}
Первый необработанный ответ: (работает нормально - анализируется автоматически)
{
"results": [
{
"version": "1.3.1-20200619.154734-4",
"integration": true
},
{
"version": "1.3.1-20200520.220752-3",
"integration": true
},
{
"version": "1.3.1-20200520.213012-2",
"integration": true
},
{
"version": "1.3.1-20200515.192713-1",
"integration": true
}
]
}
Второй запрос: (тело возвращается как необработанный байт [])
//Get artifact metadata
artifactRequest.get {
request.uri.path = ArtifactoryConstants.VERSION_METADATA_PATH
request.accept = JSON[0]
request.headers['X-JFrog-Art-Api'] = JFROG_API_KEY
response.success { from, body ->
//body type = byte[]
...
}
}
Второй необработанный ответ: (тело возвращается как необработанный байт [])
{
"repo" : "maven-repos",
"path" : "/com/myorg/utils/0.0.57-SNAPSHOT/utils-0.0.57-20200619.201340-4-jar-with-dependencies.jar",
"created" : "2020-06-19T13:13:19.785-07:00",
"createdBy" : "admin",
"lastModified" : "2020-06-19T13:13:19.785-07:00",
"modifiedBy" : "admin",
"lastUpdated" : "2020-06-19T22:00:06.778-07:00",
"downloadUri" : "https://artifactory:443/artifactory/maven-repos/com/myorg/utils/0.0.57-SNAPSHOT/utils-0.0.57-20200619.201340-4-jar-with-dependencies.jar",
"mimeType" : "application/java-archive",
"size" : "75489973",
"checksums" : {
"sha1" : "60ae9e2a53c2351c4e7cd8020d0fb87cae6a2590",
"md5" : "0db075ebbf6444d4168059af0eb9762a",
"sha256" : "8350a2d1dfaa08abae99c2c7401f9b15911972558a4017d9a6cd2a4f0c2a9587"
},
"originalChecksums" : {
"sha1" : "60ae9e2a53c2351c4e7cd8020d0fb87cae6a2590",
"md5" : "0db075ebbf6444d4168059af0eb9762a",
"sha256" : "8350a2d1dfaa08abae99c2c7401f9b15911972558a4017d9a6cd2a4f0c2a9587"
},
"uri" : "https://artifactory:443/artifactory/api/storage/maven-repos/com/myorg/utils/0.0.57-SNAPSHOT/utils-0.0.57-20200619.201340-4-jar-with-dependencies.jar"
}
Третий запрос:
//Get POM
artifactRequest.get {
request.uri.path = ArtifactoryConstants.CONTENT_PATH
request.accept = XML[0]
request.headers['X-JFrog-Art-Api'] = JFROG_API_KEY
response.success { from, body ->
//body type = byte[]
...
}
}
Третий необработанный ответ:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
//shortened for brevity
...
</project>