【问题标题】:Android, HttpPost working with ip, not with urlAndroid,HttpPost 使用 ip,而不是使用 url
【发布时间】:2012-04-25 19:18:09
【问题描述】:
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://simonexxx.no-ip.info/ilMercatinoDelxxx/ModificaArticolo?id=" + id);
//HttpPost httpPost = new HttpPost("http://151.xx.xx.247:8080/ilMercatinoDelxxx/ModificaArticolo?id=" + id);

是否有任何可能的原因导致 HttpPost 与 IP 完美配合(注释行)但不写入相对 url?

我可以通过浏览器以两种方式访问​​资源。 显然xxx只是为了隐私。

我明白了:

发送信号。 PID: 15236 SIG: 3
threadid=3: 对信号作出反应 3
将堆栈跟踪写入“/data/anr/traces.txt”

这个日志应该只是说我正在从 UI 活动访问互联网,这不应该这样做,好的。但是写IP就可以了。

【问题讨论】:

  • simonexxx.no-ip.info 是否指向本地主机?
  • 是的,是动态 dns,我的电脑是“服务器”
  • android模拟器和服务器在同一台机器上工作吗?
  • 不,我直接在我的 Galaxy Nexus 上调试
  • 您可以尝试使用模拟器和我刚刚在下面发布的解决方案吗?

标签: android http-post


【解决方案1】:

试试下面这行:

HttpPost httpPost = new HttpPost("http://simonexxx.no-ip.info:8080/ilMercatinoDelxxx/ModificaArticolo?id=" + id);

【讨论】:

  • 同样的结果,顺便说一句,8080端口是由no-ip自动添加的
【解决方案2】:

我认为问题出在端口上。通常 DNS 名称会转换为 IP 地址并保留默认端口 (80),除非您已定义将请求转发到 DNS 记录中的特定端口。现在,在没有 IP 的情况下,您似乎使用的是免费帐户,并且没有这样的功能(在免费帐户中)来定义端口和 IP 地址以提供 DNS 名称。

因此,在您的情况下,您需要将端口号与您的地址一起附加,正如@Martin Maurer 所提到的那样

【讨论】:

  • 在 no-ip 中,我设置了自动转发到端口 8080。事实上,我现在可以使用浏览器访问simonexxx.no-ip.info/ilMercatinoDelxxx/ModificaArticolo?id
  • 您可以在浏览器中访问该网址并查看结果吗?例如使用 jquery
  • 或者,登录服务器查看你的网络服务器是否真的收到了手机的请求
  • 我没有收到请求。
  • 所以,这意味着您的 dns 没有转发到端口 8080
【解决方案3】:

我猜问题出在哪里; android 模拟器无法访问本地主机。 解决方案很简单。

而不是使用http://localhost:...
你应该使用http://10.0.2.2:....
这使模拟器能够解析并调用本地主机上运行的任何服务

【讨论】:

  • 是的,但我需要使用公共 IP 联系 servlet,而不是从我的网络内部
猜你喜欢
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 2016-07-01
  • 1970-01-01
相关资源
最近更新 更多