2011-08-25 166 views
0

最近,我开始从我的小部件得到以下错误。我没有做任何改变,我想知道这个问题会是什么,以及如何解决这个问题。我的窗口小部件根据我创建的用于访问第三方客户端信息的服务信息进行更新。我几天前才得到数据。现在我收到下面的错误。未知的主机异常

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

我已经尝试重新启动模拟器,eclipse和重新启动设备。我的清单文件具有访问Internet的适当权限。这个问题最初似乎是一个网络问题,但我确认我可以从模拟器和设备上的网络浏览器访问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> 
+1

'UnknowHostException'通常意味着您的DNS系统无法解析主机名。 – asgs

+1

不知道为什么这是downvoted。我赞成你支持。可能是由于精英绅士编辑之前的看法。 :)和asgs是正确的,我会仔细检查,你有互联网许可启用,这将是我的第一步。 – Codeman

+0

您是否确定您的许可在manifest.xml中是正确的?你可以将它添加到你原来的文章吗? – elevine

回答

0

一个星期前我在两台设备(一台是2.3.4上的Nexus One和一台3.1上的变压器)上使用了完全相同的问题。认为这是我的代码,所以安装了旧版本和不可以,同样的错误。

解决方案?为每个重新启动。假设某些地方的某些东西必须在操作系统中出现错误。

+0

谢谢,但我已经尝试了几次重新启动。我重新启动了我的机器,模拟器和设备。 – user836200

1

网站“communitymonitorstudy.stepgreen.org”正在运行,我已经检查了一分钟前。

所以

  • 要么问题已经在你的身边消失,以及(请仔细检查),如果该网站已经关闭之前

  • 或遇到网络问题,防止主机被发现。

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

您发送的密码不完整:我们不知道parseMyInfo()如何使用client。如果问题与我上面提到的测试进一步关联,请更新一些代码。

+0

我已经仔细检查过我可以访问网站并在仿真器和系统上复制问题。 ParseMyInfo永远不会被调用 - 代码崩溃之前,它可以达到该行,并且问题仍然存在。 – user836200

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> 
+0

干得好:)并感谢您的更新! +1 – Shlublu