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 youimport java.io.IOException;import java.net.MalformedURLException;import java.net.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.net.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("https://www.makemysushi.com/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 facingException in thread "main" java.lang.ClassCastException: sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to sun.net.www.protocol.http.HttpURLConnectionat 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.net.www.protocol.http.HttpURLConnection; HttpURLConnection should be resolved through:import java.net.HttpURLConnection;I was able to execute your program which produces the following output:size of all link and images list81https://makemysushi.com/404#navigationhttps://makemysushi.com/https://makemysushi.com/https://makemysushi.com/sushi-universityhttps://makemysushi.com/sushi-recipeshttps://makemysushi.com/sushi-essentialshttps://makemysushi.com/storehttps://www.facebook.com/Makemysushi/https://www.instagram.com/explore/tags/makemysushi/https://plus.google.com/+Makemysushimailto:[email protected] // <-- this href attribute is of MailToURLConnection type raising the java.lang.ClassCastException which can't be casted to HttpURLConnection type...https://makemysushi.com/Sushi-share/contact-ushttps://makemysushi.com/Sushi-share/about-usnullnullnullnullsize of activelink list77https://makemysushi.com/404#navigation----Not Foundhttps://makemysushi.com/----OKhttps://makemysushi.com/----OKhttps://makemysushi.com/sushi-university----OKhttps://makemysushi.com/sushi-recipes----OKhttps://makemysushi.com/sushi-essentials----OKhttps://makemysushi.com/store----OKhttps://www.facebook.com/Makemysushi/----OKhttps://www.instagram.com/explore/tags/makemysushi/----OKhttps://plus.google.com/+Makemysushi----OKException in thread "main" java.lang.ClassCastException: sun.net.www.protocol.mailto.MailToURLConnection cannot be cast to java.net.HttpURLConnection at demo.TestMakeMySushi.main(TestMakeMySushi.java:48)ReasonThe List activelist contains an element:<a href="mailto:[email protected]" 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:[email protected] 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.HttpURLConnection的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-22 08:28