【问题标题】:android get restful api always timeoutandroid获取restful api总是超时
【发布时间】:2013-06-03 06:53:21
【问题描述】:

我在开发 Android 应用时使用httpclient(apache) 来获取一个restful API,就像

HttpGet httpget = new HttpGet("http://9.123.151.73:4414/apiv1/data");
HttpResponse response = httpclient.execute(httpget);

和xml,我已经设置了权限:

`<uses-permission android:name="android.permission.INTERNET" />`

但它总是超时。

然后我尝试这些情况:

  1. 在浏览器中打开网址,就可以了
  2. 用相同的代码新建一个简单的java项目,它可以工作
  3. 将url替换为其他rest API,例如: http://api.search.yahoo.co/NewsSearchService/V1/,工作

那么,对于这个问题,你能给我一些建议吗,我想知道为什么其余的 API 不能在 Android 应用程序中使用,是什么错误?

【问题讨论】:

  • “//http...”的网址是否正确?
  • 对不起,在我的项目中是正确的,3q
  • @wanftian 你的问题解决了吗?我面临同样的问题。如果您已经解决了,请将您的解决方案作为答案发布。
  • @Akash,问题仍然存在,我必须为我的项目使用另一种方式。最后我使用服务器作为代理来获取其余数据,但这不是最好的方式。如果您能在解决问题时分享答案,我将非常高兴。

标签: java android rest httpclient


【解决方案1】:

我相信这是由于没有设置网络连接的权限。以下是您需要添加到 AndroidMainfest.xml 文件以允许访问互联网的内容:

<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>

这里是权限说明:

INTERNET 允许应用程序打开网络套接字。

您可以通过链接查看更多关于权限的信息:

如果你使用 eclipse,这里是设置权限的方法:

如果您使用 Eclipse ADT 插件进行开发,请打开 Android Manifest Editor 中的“AndroidManifest.xml”(应该是 从项目文件中打开 androidmanifest.xml 的默认操作 列表),选择编辑器底部的“权限”选项卡 (清单 - 应用程序 - 权限 - 仪表 - AndroidManifest.xml),然后“添加...”一个“使用权限”并选择 从右侧的下拉列表中获得所需的权限,或者只是复制粘贴 在必要的一个(例如“android.permission.INTERNET” 您需要的权限

http://developer.android.com/reference/android/Manifest.permission.html

【讨论】:

  • 对不起,我已经设置了互联网权限,但它不起作用。但其他 api 工作正常
  • @Juned 他已经提到他已经添加了互联网的权限。此外,如果没有添加 Internet 权限,则会抛出UnknownHostException
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
相关资源
最近更新 更多