Автоматический синтаксический анализ тела ответа 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>

0 ответов

Другие вопросы по тегам