Android无法解析主机
问题描述:
我是Android新手,所以这个问题可能有一个简单的答案(我可能错过了一些东西)。我试图在Google的Resting框架的帮助下制作一个REST客户端(因为Jersey似乎没有工作)。当我尝试运行客户端,我得到这样的警告:Android无法解析主机
W/System.err(728): java.net.UnknownHostException: Unable to resolve host "my.ip:8080": No address associated with hostname
,然后我得到了一些例外,但我想,这是根本原因。
我有上网权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.maze.client"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".RestingClientActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
如果您需要任何额外的信息,请让我知道。
- 在警告我用“mi.ip”取代了我的IP(这是故意完成的,但在原来它是没问题的)。
答
如果您发布的代码段与服务器进行连接,将会更容易为您提供帮助。 但是,可能你的问题是创建要调用的URI。例如:
URI uri = URIUtils.createURI("http", "your-ip", 8080, "/path/to/webservice",
URLEncodedUtils.format(params, "UTF-8"), null);
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(uri);
response = client.execute(get);
因此,如果您使用无效或错误的URI调用execute方法,您可能会遇到问题。或者,有时候,当你打开AVD并改变你使用的网络时,例如,走出办公室并开始使用家庭无线网络,你应该会遇到这样的问题。
答
我相信我和OP有同样的问题,我知道这是一个老问题,但无论如何都会发表我的发现。
问题是静态框架方法(如get())会通过其连接助手传递url,并且期望您提供端口作为第二个参数。
因此,采取的不是OP的例子,:
Resting.get('my.ip:8080');
您的通话应该是:
Resting.get('my.ip', 8080)
希望帮助别人:)
有你试图重新启动模拟器,我得到这个例外很多次,但重启模拟器后,问题就解决了。尝试如果你还没有尝试 – 2012-02-19 16:10:21
@NixitPatel我已经重新启动模拟器多次,然后我重新启动了日食,但我不断收到此错误。 – Dragos 2012-02-19 16:38:33
尝试在设备上运行它;有时候emultator会拧紧。我知道我在模拟器上有与流式.mjpeg文件类似的问题;在模拟器上崩溃但在我的设备上运行完美。 – 2012-02-19 17:08:54