API Дженкинса, возвращающий 403 по HTTPURLConnector - PullRequest
0 голосов
/ 14 декабря 2018

Я настраиваю некоторые вещи, и мне нужен доступ к моему API Jenkins.Ну, все работает нормально, если я отправляю запрос GET на http://.../job/DogoBot/lastBuild/api/json с XMLHttpRequest от restman, javascript и т. Д. Но когда я пытаюсь HTTPURLConnector из java.net, он возвращает 403. Я не могу понять почему, это точно такой же запрос GET.Я использую этот метод, сделанный мной самостоятельно с Kotlin:

        /**
         * Sends a GET request to [url]. It can also be specified GET [args] and http [headers].
         *
         * @param[url] The URL to fetch
         * @param[args] GET arguments (optional)
         * @param[headers] HTTP Headers (optional)
         *
         * @return the body of the page.
         * @throws java.io.IOException
         */
        fun get(url: String, args: Array<Pair<String, String>> = emptyArray(), headers: Array<Pair<String, String>> = emptyArray()): String {
            var url = url
            if (args.isNotEmpty()) {
                url += args.map {
                    Pair(URLEncoder.encode(it.first, "UTF-8"), URLEncoder.encode(it.second, "UTF-8"))
                }.joinToString(separator = "&", prefix = "&")
            }
            val response = StringBuilder()
            (URL(url).openConnection() as HttpURLConnection).let {
                it.requestMethod = "GET"
                headers.forEach { h ->
                    it.setRequestProperty(h.first, h.second)
                }
                it.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2")


                it.inputStream.also {
                    BufferedReader(InputStreamReader(it)).also {
                        do {
                            val line = it.readLine()?.let { response.append("$it\n") }
                        } while (line != null)
                    }.close()
                }.close()
            }
            return response.toString()
        }

Я тестирую с:

println(get("http://.../job/DogoBot/lastBuild/api/json"))

, и я получаю и Exception сообщая, что я получил 403.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...