单击按钮打开套接字以从(https 服务器)web url 获取输入流

Opening a Socket to get input stream from a(https server) web url on click of button

我试图通过点击按钮打开套接字连接。当套接字连接成功时,我必须获取 https server.Finally 中的网络 url 数据,我需要将接收到的数据传递给视频视图进行播放。 每次都遇到以下错误:

     **java.net.UnknownHostException: Unable to resolve host <url>: No address associated with hostname**

下面是我打开套接字的代码。

private void openSocket() {

    Runnable serverTask = new Runnable() {
        @Override
        public void run() {
            try {
                Socket s = new Socket("http://www.zocdoc.com/", 80);

                //outgoing stream redirect to socket
                OutputStream out = s.getOutputStream();

                PrintWriter output = new PrintWriter(out);
                output.println("Hello Android!");
                BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));

                //read line(s)
                String st = input.readLine();

                Log.d(TAG, "openSocket: " + st);
                //Close connection
                s.close();


            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    Thread serverThread = new Thread(serverTask);
    serverThread.start();
}

我已经检查了我的互联网连接,非常感谢它的 fine.Any 帮助。

new Socket("http://www.zocdoc.com/", 80);

问题出在第一个参数中:您必须在那里指定主机名而不是 HTTP URL。如果您想打开 TCP 套接字,请尝试以下操作:

new Socket("www.zocdoc.com", 80);

但是如果你想从那个 http url 消费数据流,Socket 不是你需要的(如果你不愿意自己实现 HTTP 协议的话)。您可以将以下内容与香草一起使用 URL API:

InputStream is = new URL("http://www.zocdoc.com/").openStream();
// read from that stream

或者使用一些 HTTP 客户端,比如 Apache Httpcomponents http://hc.apache.org/httpcomponents-client-ga/