0

我正在尝试从我的 android 应用程序访问 IP 地址,但我没有任何运气。这是我正在尝试的异步任务:

protected String doInBackground(Void...arg0) {
       try{
            URL url = new URL(myIP);
            HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
            String read = readStream(con.getInputStream());
            return read;
        } catch(Exception e){
            e.printStackTrace();
        }

        return null;
    }

    private String readStream(InputStream in){
        BufferedReader reader = null;
        StringBuilder sb = new StringBuilder("xxxx");
        try{
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while((line = reader.readLine()) != null){
                sb.append(line + "\n");
            }
        } catch(IOException e){
            e.printStackTrace();
        } finally{
            if(reader != null){
                try{
                    reader.close();
                } catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
        return sb.toString();
    }

    protected void onPostExecute(String result){
        textView.setText(result);
    }

当我使用像 www.stackoverflow.com 这样的普通 URL 时,它可以正常工作,但是当我尝试使用 IP 时,却没有任何响应。它没有抛出任何异常,也没有更新 textView(我尝试根据抛出的异常返回不同的结果)。所以这让我想到了我的问题,IP 地址是 URL 连接的有效输入吗?让我知道我是否可以提供任何其他信息。

我的最终目标是将 REST 请求发送到此 IP 以访问特定信息也可能会有所帮助。

4

3 回答 3

1

HttpsUrlConnection 类用于 HTTPS 连接,如果您想使用 IP 访问网站,您的 myIP 变量应该是这样的:

String myIP="https://62.123.123.123/index.php" //for example

但是,如果您想访问远程机器进行直接通信,您应该使用套接字。

看看这个_

希望能帮助到你 :)

于 2013-06-13T17:04:26.797 回答
0

我遇到了这个问题,结果证明你不能把 IP 地址放在证书的 CN 字段中,它必须放在 Subject Alternative Name 字段中。

于 2014-10-15T09:03:23.063 回答
0

由于我所在的网络,我无法访问该 IP。简而言之,我最初的问题的答案是肯定的,IP 地址对 HttpURLConnections 有效。

于 2013-06-18T18:28:48.057 回答