JSOUP URL-адрес подключения ошибок в Coldfusion - PullRequest
2 голосов
/ 20 сентября 2019

Я пытался работать с JSOUP, ниже я упомянул мой код

Application.cfc как

<cfset this.name = "jsoupApp11111">
<cfset this.javasettings = { loadpaths = [#expandPath("./jsoup-1.12.1.jar")#],reloadOnchange = true}>

файл CFM как


<cfset jsoupObj = createObject("java","org.jsoup.Jsoup")>
<cfset testURL = 'https://en.wikipedia.org/wiki/List_of_countries_by_population_(United_Nations)'>
<cfset connectUrlSite = jsoupObj.connect(testURL).get() >
<cfset getUrlSiteBody = connectUrlSite.body() >
 <cfoutput>
    #connectUrlSite.title()#"
 </cfoutput>

<cfloop array="#getUrlSiteBody.select('img')#" index="i">
    <cfoutput>
        #i#
    </cfoutput>
</cfloop>

Этоработает нормально для вышеуказанного URL сайта Википедии. Когда я пытаюсь сделать то же самое для некоторых других сайтов, я получаю сообщение об ошибке, например Received fatal alert: handshake_failur, а некоторые другие сайты выдают сообщение об ошибке, например PKIX path validation failed error, во время процесса jsoupObj.connect (testURL).Я не уверен, что я пропустил или в каком месте я получу более подробную информацию об ошибках такого рода.

Сообщение об ошибке После использования http вместо https enter image description here

Каждый ответ является полезным и полезным.

Заранее спасибо!

1 Ответ

1 голос
/ 23 сентября 2019

Вы пропустили некоторую соответствующую информацию (например, вашу версию Java), но в целом эти ошибки https вызваны тем, что JSoup не может установить безопасное соединение с целевым сервером.

Получено фатальное предупреждение: handshake_failure

Мне удалось воспроизвести ошибку с Java 1.8.0_72.Включение отладки, то есть -Djavax.net.debug=all, подтвердило, что это вызвано ошибкой расширения имени_сервера сервера .Обновление JVM, используемой CF до версии 1.8.0_141 или новее, решило проблему.

  • Java 1.8.0_144 (исправлено)

    *** ClientHello, TLSv1.2
    ...
    Extension signature_algorithms, signature_algorithms: ...
    Extension server_name, server_name: [type=host_name (0), value=trycf.com]
    ***
    
  • Java 1.8.0_72 (отсутствует имя_сервера)

    *** ClientHello, TLSv1.2
    ...
    Extension signature_algorithms, signature_algorithms: ...
    ***
    

URL-адрес ошибки HTTP при получении,Статус = 403

Код статуса HTTP 403 означает, что запрос запрещен.В этом случае запрос отклоняется, поскольку значение user-agent пусто.См. Документацию по добавлению агента пользователя .

Просто имейте в виду, что некоторые сайты намеренно отклоняют такие запросы, чтобы предотвратить скриншот экрана.Поэтому сначала ознакомьтесь с положениями и условиями сайта, чтобы узнать, запрещен ли программный доступ.

Ошибка проверки пути PKIX * ​​1043 *

Вам необходимо указать URL, который вызвал у нас ошибкучтобы быть более конкретным, но, как правило, это указывает на проблему с отсутствующими или недействительными сертификатами.См. Также Как устранить исключения Java HTTPS

...