6

这是 cmd 行

"C:\Progra~2\Android\android-sdk\tools\emulator.exe" -avd Touch -netspeed full -netdelay none -http-proxy localhost:3128 -debug-proxy

当我尝试从模拟器打开 google.com 时,这是控制台:

server name 'localhost' resolved to 127.0.0.1:3128
proxy_http_setup: creating http proxy service connecting to: localhost:3128
server name 'localhost' resolved to 127.0.0.1:3128
proxy_http_setup: creating HTTP Proxy Service Footer is (len=2):
'
'
http_service_connect: trying to connect to (null)
http_service_connect: using HTTP rewriter
tcp:(null)(880): connecting
tcp:(null)(880): connected to http proxy, sending header
tcp:(null)(880): sending 27 bytes:
>> 43 4f 4e 4e 45 43 54 20 28 6e 75 6c 6c 29 20 48    CONNECT (null) H
>> 54 54 50 2f 31 2e 31 0d 0a 0d 0a                   TTP/1.1....

tcp:(null)(880): header sent, receiving first answer line
tcp:(null)(880): received 'HTTP/1.0 400 Bad Request'
tcp:(null)(880): connection refused, error=400
http_service_connect: trying to connect to (null)
http_service_connect: using HTTP rewriter
tcp:(null)(888): connecting

这是维基词典示例调试的异常

Caused by: java.net.ConnectException: en.wiktionary.org/91.198.174.232:80 - Connection refused

关于我的代理:它是我本地机器上的 squid,它被配置为通过父代理路由(使用身份验证)。这适用于浏览器/Android SDK 加载器/IntelliJ 等,但模拟器网络不起作用。

主要的困惑是

tcp:(null)

有什么建议么?

4

3 回答 3

2

模拟器中存在大量关于代理支持的记录问题,尤其是对于 Windows 上的最新版本。请参阅此处的错误报告:

http://code.google.com/p/android/issues/detail?id=5508&q=emulator%20proxy&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

那里有一些建议的解决方法可能会有所帮助,例如在网络设置中设置代理而不是为整个模拟器设置代理。

于 2011-08-03T01:23:57.280 回答
1

我有同样的问题(Mac Os X - Android SDK Tools 12)。这些是我来自 logcat 的日志:

08-04 15:33:41.576: INFO/java.net.Socket(256): www.google.com/209.85.148.104(80): java.net.ConnectException: www.google.com/209.85.148.104:80 - 拒绝连接

我使用 squid 作为代理,日志是:

1312464815.525 0 172.16.1.1 TCP_DENIED/400 1587 连接:0-无/-文本/html

好像有什么东西丢了……

我还注意到模拟器试图在请求中使用我的 dns。

于 2011-08-04T13:37:08.213 回答
0

由于您是从 Android 模拟器中引用系统上的 localhost ,因此您必须使用http://10.0.2.2:8080/. 这是因为 android 模拟器在虚拟机中运行,因此这里的 127.0.0.1 或 localhost 将是模拟器自己的环回地址。此外,您不需要放置-netspeed full -netdelay none,因为默认情况下属性设置为这些值。查看内容以获取有关模拟器网络的更多信息。

编辑:

localhost根据您的情况,您可以替换为另一个地址。如果它是路由器/网关地址,则将其替换为10.0.2.1. 如果它是主机环回接口的特殊别名(即开发机器上的 127.0.0.1),则将其替换为10.0.2.2. 如果它是 First DNS 服务器,则将其替换为10.0.2.3. 如果它是可选的第二、第三和第四个 DNS 服务器,则将其替换为10.0.2.4/ 10.0.2.5/ 10.0.2.6。如果它是仿真设备自己的网络/以太网接口,则将其替换为10.0.2.15. 如果是仿真设备自己的环回接口,则将其替换为127.0.0.1. 另外,你的开发机器上的地址 127.0.0.1 对应于模拟器自己的环回接口,所以如果你想访问在你的开发机器的环回接口上运行的服务,你应该使用特殊的地址10.0.2.2来代替。单击此处了解更多信息。

于 2011-08-01T06:13:02.767 回答