【问题标题】:Couldn't Access Amazon EC2 instance from Android无法从 Android 访问 Amazon EC2 实例
【发布时间】:2017-08-05 16:38:07
【问题描述】:

我在 AWS EC2 中托管了一个 Web 服务,并且可以使用公共 DNS 从 Web 浏览器访问 URL。当我通过从 android Emulator 运行它来访问它时,它会抛出“java.net.UnknownHostException: Unable to resolve host Instance.us-east-2.compute.amazonaws.com/getJSON”

i)我已在 Android Manifest 中授予 INTERNET 权限。 ii) 我在 EC2 的安全组中有一个开放网关权限 0.0.0.0:0 我哪里错了?

@Override
    protected String doInBackground(String... params) {
        try {

            // Enter URL address where your json file resides
            // Even you can make call to php file which returns json data
            url = new URL("http://Instance.us-east-2.compute.amazonaws.com/getJSON");




        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.toString();
        }
        try {

            // Setup HttpURLConnection class to send and receive data from php and mysql
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(READ_TIMEOUT);
            conn.setConnectTimeout(CONNECTION_TIMEOUT);
            conn.setRequestMethod("GET");


            // setDoOutput to true as we recieve data from json file
            conn.setDoOutput(true);

        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            System.out.println("Printing stack "+e1.toString());
            return e1.toString();
        }

        try {

            int response_code = conn.getResponseCode();

            if (response_code == HttpURLConnection.HTTP_OK) {

                // Read data sent from server
                InputStream input = conn.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder result = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

                // Pass data to onPostExecute method
                return (result.toString());

            } else {

                return ("unsuccessful");


}

【问题讨论】:

  • 您的网址似乎无法访问。这似乎是一个获取 URL,但我仍然无法正确访问它。查看您的网络服务是否正确托管,并且您已完成当前的防火墙设置
  • 将代码中的真实网址复制并粘贴到浏览器中,并确保其可访问。您很可能在此处输入错误。
  • 感谢您的回答。 @kapsym,我在这里提到的 URL 不是真实的。出于安全原因,我已对其进行了修改。但是当我从 Web 浏览器访问它时,我可以得到正确的响应。
  • @Putnik 在此处粘贴 URL 是否安全?我不知道 AWS 的安全漏洞。我是新手
  • 我的意思是不在这里,只是给你测试。

标签: android amazon-web-services amazon-ec2 android-emulator


【解决方案1】:

我使用的客户端无法处理来自我使用的 URL 的响应,我使用 AsynHttpClient 解决了这个问题。源链接:http://loopj.com/android-async-http/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2019-11-23
    • 2016-01-22
    相关资源
    最近更新 更多