未知主机异常

时间:2011-08-25 14:27:18

标签: java android unknown-host

最近,我开始从我的小部件中收到以下错误。我没有做任何改变,我想知道问题是什么以及如何解决问题。我的小部件会根据我创建的服务中的信息进行更新,以便从第三方客户端访问信息。几天前,我能够将数据恢复正常。现在我收到以下错误。

我刚尝试在一个活动中运行代码(即非小部件),它运行正常。我不确定它为什么在一个活动中起作用而不是一个小部件。我也在一个单独的Intent中运行对第三方网站的访问。

我尝试重启模拟器,eclipse并重启设备。我的清单文件具有访问Internet的适当权限。最初的问题似乎是网络问题,但我确认我可以从模拟器和设备上的Web浏览器访问URL。这段代码几天前刚刚开始工作。我用我的清单文件更新了帖子。代码在调用parseMyInfo之前就失败了。在OAuth使用者/提供者调用期间抛出异常。

错误

oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:214)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at com.test.community.SG_Service$TED.populate(SG_Service.java:276)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at com.test.community.SG_Service$SGHandler.getTEDData(SG_Service.java:813)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at com.test.community.SG_Service$SGService_BG.onHandleIntent(SG_Service.java:844)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at android.os.Looper.loop(Looper.java:123)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at android.os.HandlerThread.run(HandlerThread.java:60)
08-24 22:36:02.063: ERROR/ARCHOS(541): Caused by: java.net.UnknownHostException: communitymonitorstudy.stepgreen.org
08-24 22:36:02.063: ERROR/ARCHOS(541):     at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at java.net.InetAddress.getAllByName(InetAddress.java:242)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at oauth.signpost.commonshttp.CommonsHttpOAuthProvider.sendRequest(CommonsHttpOAuthProvider.java:64)
08-24 22:36:02.063: ERROR/ARCHOS(541):     at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:177)

代码失败 失败的代码如下:

HttpClient client = new DefaultHttpClient();

consumer = new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, 
Constants.CONSUMER_SECRET);
provider = new CommonsHttpOAuthProvider(Constants.REQUEST_TOKEN_URL,   
Constants.ACCESS_TOKEN_URL, Constants.AUTHORIZE_URL, client);

provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND); 

provider.retrieveAccessToken(consumer, null);

MyInfo info = parseMyInfo(userName, consumer, client);

清单文件          

<application android:icon="@drawable/icon" android:debuggable="true"  
android:label="@string/app_name" android:name="AppStatus">

<activity android:name=".CommunityMonitorActivity"android:label="@string/app_name">
<intent-filter>
<action android:name="com.cmu.community.CommunityWidget.ACTION_WIDGET_CONFIGURE"/>
</intent-filter>
</activity>

 <activity android:name=".MyInfoActivity"
   android:theme="@style/Theme.D1"
   android:label="@string/my_info"
 />

 <activity android:name=".HomeActivity"
  android:theme="@style/Theme.D1"
  android:label="@string/home"
 />

 <activity android:name=".AboutActivity"
 android:theme="@style/Theme.D1"
 android:label="@string/about"
 />


<receiver android:name=".CommunityWidget" android:label="@string/app_name">
    <intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

    <action android:name="com.cmu.community.CommunityWidget.ACTION_WIDGET_RECEIVER"/>
    </intent-filter>
   <meta-data android:name="android.appwidget.provider" 
          android:resource="@xml/communitywidgetprovider" />
</receiver>

<receiver android:name="com.cmu.community.Stepgreen_Service$StepgreenReceiver">
    <intent-filter>
        <action android:name="com.cmu.community.ACTION_STEPGREENMANAGER"></action>
    </intent-filter>
</receiver>

  <receiver android:name="com.cmu.community.AppStatus_Service$AppStatusReceiver">
    <intent-filter>
        <action android:name="com.cmu.community.ACTION_APPSTATUSMANAGER"></action>
    </intent-filter>
</receiver>


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

<service android:name="Stepgreen_Service$StepgreenService_BG"></service>
</application>
</manifest>

3 个答案:

答案 0 :(得分:1)

网站“ communitymonitorstudy.stepgreen.org ”已启动并运行,我已在一分钟前检查过。

所以

  • 如果网站已经关闭,问题已经消失在你身边(请仔细检查)

  • 或者您遇到阻止找到主机的网络问题。

您应该检查同一设备上托管的常规浏览器是否可以访问该网站。如果是这样,这意味着问题与应用程序有关。如果不是,则它与网络连接有关。

您发送的代码不完整:我们不知道client如何使用parseMyInfo()。如果问题与您的应用程序相关,请在上面建议的测试之后再使用更多代码更新您的问题。

答案 1 :(得分:1)

我无法相信自己的错误......

那些说我的权限有问题的人是对的。我需要在应用程序之外包含我的Internet权限。 IE:

<service android:name="Stepgreen_Service$StepgreenService_BG"></service>
</application>

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

</manifest>

答案 2 :(得分:0)

我一周前在两台设备上遇到了完全相同的问题(2.3.4上的Nexus One和3.1上的Transformer)。以为这是我的代码,所以安装了旧版本和nope,同样的错误。

解决方案?每个都重新启动。假设操作系统某处必须出现问题。