代码之家  ›  专栏  ›  技术社区  ›  KB22

使用Java类HtpSurLink连接

  •  31
  • KB22  · 技术社区  · 14 年前

    我有一小段代码,它基本上导入了一个HTTP客户机, 也就是说,它发布请求并重新响应。只要http是 所有的事情都很好。出于某种原因,我现在必须支持 https也是。下面简要介绍我为打开连接所做的操作:

     URL url = new URL(serverAddress);
     HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
    

    失败,说明:

    sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to com.sun.net.ssl.HttpsURLConnection
    

    我想这有点微不足道,但我就是不明白我在这件事上做错了什么… 在谷歌上搜索,代码看起来就对了-不是吗?

    感谢您的任何想法!

    9 回复  |  直到 5 年前
        1
  •  28
  •   baudsp    5 年前

    就这样吧 java.net.URLConnection 或者把它扔给 java.net.HttpURLConnection 相反。这两种方法都提供了实现理想任务的方法。


    与技术问题无关的旁注:你应该 从未 在代码中显式导入/使用Sun实现SE特定的类。这些是未记录的类,可能会在升级JVM时发生更改,从而导致代码中断。另一方面,当您在另一个品牌的JVM上运行代码时,代码也可能会中断。


    更新 :由于您似乎意外地导入了它,请转到 窗口& gt;偏好& gava>外观&类型过滤器 添加 com.sun.* sun.* 到列表中。这样您就不会意外地导入它们:

    enter image description here

        2
  •  19
  •   Salman Zafar    10 年前

    您的URL协议也应该是http s,而不是http。检查你的网址。

        3
  •  13
  •   Amin Abu-Taleb    10 年前

    以上问题仅由两个问题引起

    1. 使用错误的导入
    2. 使用 http 在字符串中,您通过使用创建URL https
        4
  •  7
  •   RichardTheKiwi    12 年前

    而不是使用类似于

    URL wsURL = new URL(url);
    

    使用

    java.net.URL wsURL = new URL(null, url,new sun.net.www.protocol.https.Handler());
    

    哪个可以解决这个问题

        5
  •  5
  •   DaveJohnston    14 年前

    检查你的进口,你应该用

    java.net.HttpURLConnection
    

    javax.net.ssl.HttpsURLConnection
    
        6
  •  5
  •   Dayanand Fagare    11 年前

    检查“serverAddress”变量的值。它应该是https而不是http

        7
  •  4
  •   user120242    8 年前

    更改:

    import javax.net.ssl.HttpsURLConnection;
    

    URL url = new URL(serverAddress);
    HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
    

    更改为:

    import java.net.HttpURLConnection;
    

    URL url = new URL(serverAddress);
    HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
    
        8
  •  3
  •   Mike Baranczak    14 年前

    如果看不到整个文件,很难说出来,但当您真正想要javax.net.ssl.httpsurlconnection时,似乎正在导入com.sun.net.ssl.httpsurlconnection。

        9
  •  0
  •   AJC    6 年前

    在我的例子中,调用httpsurlConnection时协议和端口不正确。

    端口和协议被定义为静态类变量。失败步骤之前的步骤正在调用httpurlConnection。该方法将端口/协议更改为80/HTTP,但最终没有将其设置回/HTTPS。因此,尽管调用了httpsurlconnection,但它仍然使用http/80。一旦我在httpurlconnection方法的末尾重置了它们,错误就消失了。