【发布时间】: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