sun.net.www.protocol.https.HttpsURLConnectionImpl无法转换为sun.net.www.protocol.http.HttpURLConnection

编程入门 行业动态 更新时间:2024-10-26 10:27:33
本文介绍了sun.www.protocol.https.HttpsURLConnectionImpl无法转换为sun.www.protocol.http.HttpURLConnection的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我正在使用硒库进行测试.但是下面的代码给了我类强制转换异常.我已经用谷歌搜索了这个异常,但是没有得到解决方案.我对Https连接和http连接感到困惑.帮助我解决此异常.谢谢

import java.io.IOException; import java.MalformedURLException; import java.URL; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import sun.www.protocol.http.HttpURLConnection; public class TestMakeMySushi { private static final String HttpURLConnection = null; public static void main(String[] args) throws InterruptedException, MalformedURLException, IOException { System.setProperty("webdriver.chrome.driver", "C:\\Users\\Dev-24\\Downloads\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.manage().deleteAllCookies(); driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS); driver.get("www.makemysushi/404?"); List<WebElement> linklist = driver.findElements(By.tagName("a")); linklist.addAll(driver.findElements(By.tagName("img"))); System.out.println("size of all link and images list" + linklist.size()); List<WebElement> activelist = new ArrayList<WebElement>(); for (int i = 0; i < linklist.size(); i++) { System.out.println(linklist.get(i).getAttribute("href")); if (linklist.get(i).getAttribute("href") != null && (!linklist.get(i).getAttribute("href").contains("javascript"))) { activelist.add(linklist.get(i)); } } System.out.println("size of activelink list" + activelist.size()); for (int j = 0; j < activelist.size(); j++) { HttpURLConnection connection = (HttpURLConnection) new URL(activelist.get(j).getAttribute("href")).openConnection(); connection.connect(); String response = connection.getResponseMessage(); connection.disconnect(); System.out.println(activelist.get(j).getAttribute("href") + "----" + response); } } }

我面临的异常

Exception in thread "main" java.lang.ClassCastException: sun.www.protocol.https.HttpsURLConnectionImpl cannot be cast to sun.www.protocol.http.HttpURLConnection at TestMakeMySushi.main(TestMakeMySushi.java:76) C:\Users\Dev-24\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

解决方案

@KarolDowbecki的分析方向正确.

而不是sun.www.protocol.http.HttpURLConnection; HttpURLConnection 应该通过以下方式解决:

import java.HttpURLConnection;

我能够执行您的程序,并产生以下输出:

size of all link and images list81 makemysushi/404#navigation makemysushi/ makemysushi/ makemysushi/sushi-university makemysushi/sushi-recipes makemysushi/sushi-essentials makemysushi/store www.facebook/Makemysushi/ www.instagram/explore/tags/makemysushi/ plus.google/+Makemysushi mailto:info@makemysushi // <-- this href attribute is of MailToURLConnection type raising the java.lang.ClassCastException which can't be casted to HttpURLConnection type . . . makemysushi/Sushi-share/contact-us makemysushi/Sushi-share/about-us null null null null size of activelink list77 makemysushi/404#navigation----Not Found makemysushi/----OK makemysushi/----OK makemysushi/sushi-university----OK makemysushi/sushi-recipes----OK makemysushi/sushi-essentials----OK makemysushi/store----OK www.facebook/Makemysushi/----OK www.instagram/explore/tags/makemysushi/----OK plus.google/+Makemysushi----OK Exception in thread "main" java.lang.ClassCastException: sun.www.protocol.mailto.MailToURLConnection cannot be cast to java.HttpURLConnection at demo.TestMakeMySushi.main(TestMakeMySushi.java:48)

原因

列表 活动列表包含一个元素:

<a href="mailto:info@makemysushi" target="_blank"><i id="social-em" class="fa fa-envelope-square fa-3x social"></i></a>

当您尝试通过 href 属性 mailto:info@makemysushi 建立连接时,如下所示:

HttpURLConnection connection = (HttpURLConnection) new URL(activelist.get(j).getAttribute("href")).openConnection();

无法建立成功的连接,因为无法将 MailToURLConnection 对象强制转换为 HttpURLConnection 对象并引发 java.lang.ClassCastException i am using selenium library for testing purpose. But the following code giving me class cast exception. i have googled this exception but didn't get the solution. i am confused in Https connetion and http connetion. help me to solve this exception. thank you

import java.io.IOException; import java.MalformedURLException; import java.URL; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import sun.www.protocol.http.HttpURLConnection; public class TestMakeMySushi { private static final String HttpURLConnection = null; public static void main(String[] args) throws InterruptedException, MalformedURLException, IOException { System.setProperty("webdriver.chrome.driver", "C:\\Users\\Dev-24\\Downloads\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.manage().deleteAllCookies(); driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS); driver.get("www.makemysushi/404?"); List<WebElement> linklist = driver.findElements(By.tagName("a")); linklist.addAll(driver.findElements(By.tagName("img"))); System.out.println("size of all link and images list" + linklist.size()); List<WebElement> activelist = new ArrayList<WebElement>(); for (int i = 0; i < linklist.size(); i++) { System.out.println(linklist.get(i).getAttribute("href")); if (linklist.get(i).getAttribute("href") != null && (!linklist.get(i).getAttribute("href").contains("javascript"))) { activelist.add(linklist.get(i)); } } System.out.println("size of activelink list" + activelist.size()); for (int j = 0; j < activelist.size(); j++) { HttpURLConnection connection = (HttpURLConnection) new URL(activelist.get(j).getAttribute("href")).openConnection(); connection.connect(); String response = connection.getResponseMessage(); connection.disconnect(); System.out.println(activelist.get(j).getAttribute("href") + "----" + response); } } }

Exception that i am facing

Exception in thread "main" java.lang.ClassCastException: sun.www.protocol.https.HttpsURLConnectionImpl cannot be cast to sun.www.protocol.http.HttpURLConnection at TestMakeMySushi.main(TestMakeMySushi.java:76) C:\Users\Dev-24\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

解决方案

@KarolDowbecki's analysis was in the right direction.

Instead of sun.www.protocol.http.HttpURLConnection; HttpURLConnection should be resolved through:

import java.HttpURLConnection;

I was able to execute your program which produces the following output:

size of all link and images list81 makemysushi/404#navigation makemysushi/ makemysushi/ makemysushi/sushi-university makemysushi/sushi-recipes makemysushi/sushi-essentials makemysushi/store www.facebook/Makemysushi/ www.instagram/explore/tags/makemysushi/ plus.google/+Makemysushi mailto:info@makemysushi // <-- this href attribute is of MailToURLConnection type raising the java.lang.ClassCastException which can't be casted to HttpURLConnection type . . . makemysushi/Sushi-share/contact-us makemysushi/Sushi-share/about-us null null null null size of activelink list77 makemysushi/404#navigation----Not Found makemysushi/----OK makemysushi/----OK makemysushi/sushi-university----OK makemysushi/sushi-recipes----OK makemysushi/sushi-essentials----OK makemysushi/store----OK www.facebook/Makemysushi/----OK www.instagram/explore/tags/makemysushi/----OK plus.google/+Makemysushi----OK Exception in thread "main" java.lang.ClassCastException: sun.www.protocol.mailto.MailToURLConnection cannot be cast to java.HttpURLConnection at demo.TestMakeMySushi.main(TestMakeMySushi.java:48)

Reason

The List activelist contains an element:

<a href="mailto:info@makemysushi" target="_blank"><i id="social-em" class="fa fa-envelope-square fa-3x social"></i></a>

When you are trying to establish a connection through the href attribute mailto:info@makemysushi as in:

HttpURLConnection connection = (HttpURLConnection) new URL(activelist.get(j).getAttribute("href")).openConnection();

A successful connection cannot be established as MailToURLConnection object can't be casted to HttpURLConnection object and raises java.lang.ClassCastException

更多推荐

sun.net.www.protocol.https.HttpsURLConnectionImpl无法转换为sun.net.www.protocol.http.

本文发布于:2023-10-31 05:14:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545108.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:转换为   www   protocol   net   sun

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!