我面临的异常
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.
发布评论