sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to sun.net.www.protocol.http.HttpURLConnection

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.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.
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(""); 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.net. cannot be cast to sun.net.
at TestMakeMySushi.main(TestMakeMySushi.java:76)
C:\Users\Dev-24\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

3 Answers

Change your import statement for HttpURLConnection class from import sun.net. to import java.net.HttpURLConnection;.

You are not supposed to use sun packages and classes in your application code. They are internal to JVM.

2

@KarolDowbecki's analysis was in the right direction.

Instead of sun.net. 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 list81
mailto:[email protected] // <-- this href attribute is of MailToURLConnection type raising the java.lang.ClassCastException which can't be casted to HttpURLConnection type
.
.
.
null
null
null
null
size of activelink list77 Found
Exception in thread "main" java.lang.ClassCastException: sun.net. cannot be cast to java.net.HttpURLConnection at demo.TestMakeMySushi.main(TestMakeMySushi.java:48)

Reason

The List activelist contains an element:

<a href="mailto:[email protected]" target="_blank"><i></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

0

I was facing same issue because i imported

import com.sun.net.ssl.HttpsURLConnection;

remove that and import below

import javax.net.ssl.HttpsURLConnection;

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like