我试图让自己尽可能清楚:
我的申请表中有:
MAJService
类ConsoNRJ
类MAJDonnees
InfosConso
的助手类,它将实例化一个MAJDonnees
工作者。InfosConso
对象InfosConso
对象将创建MAJDonnees
MAJDonnees
对象将使用HttpURLConnection
InfosConso
对象InfosConso
对象将创建MAJDonnees
MAJDonnees
对象将创建AsyncTask
,然后使用HttpURLConnection
您可以看到可能有助于您理解我的代码的图表:
code.google.com/p/consonrj/wiki/CodeStructure
由于活动和服务基本上运行相同的代码(在MAJDonnees
类中),因此它们的行为应该完全相同:获取HTML页面并解析它们
从服务运行时,HttpURLConnections
在MAJDonnees
处理时返回错误结果。
名为HttpURLConnections
的{{1}}实例提供无效的HTTP响应:h
返回-1
我不知道如何获得更多的调试信息。
但是,如果活动已启动,则在h.getResponseCode()
处理时HTTP连接正常工作,默认MAJDonnees
返回200(HTTP 200 OK)。
然后如果服务再次运行(计划每隔x分钟运行一次),HTTP连接就可以工作!
您可以首先运行服务的logcat,然后运行活动,然后再运行服务,并查看行为。
http://pastebin.com/DGc8fym2
对不起,这是法国人,我希望你还能猜到! :)
如果您愿意,可以查看整个来源:
code.google.com/p/consonrj/source/browse/#svn/trunk
我希望你能帮我调试一下!我的服务需要在设备启动时从Internet获取数据,每x小时/天,并且不需要首先启动活动!
感谢。
答案 0 :(得分:0)
非常感谢你的建议布拉德。
事实上,我已经通过在应用程序中生成更多调试详细信息来解决问题。
实际上,活动使用Compte
类从手机内存中的文件加载用户凭据,而服务则没有。因此,该服务没有用户凭据登录HTML页面。因此,服务使用空凭据发送登录请求,直到活动加载它们。
现在该服务还使用Compte
类加载凭据,它运行良好。
非常抱歉,我没有对我的应用进行更彻底的调查。