【问题标题】:HTTPClient causing app to force closeHTTPClient 导致应用程序强制关闭
【发布时间】:2014-06-17 18:44:23
【问题描述】:

我的 Android 模拟器出现此错误:

对不起 应用程序意外停止。请再试一次。 [强制关闭]

我认为导致错误的代码是这样的: HttpClient 客户端 = new HttpClient();

我从 JARS 导入了以下内容:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;

有什么想法吗?有没有办法获得有关错误的更多详细信息?上面描述的消息不是很有帮助...

堆栈跟踪:

我看过这个,我认为这是问题所在。 (这里发布太长了..)

E/dalvikvm(  757): Could not find class 'org.apache.commons.httpclient.HttpClient', referenced from method com.projectNoble.androidClient.serverComms.initCommunication

W/dalvikvm(  757): VFY: unable to resolve new-instance 46 (Lorg/apache/commons/httpclient/HttpClient;) in Lcom/projectNoble/androidClient/serverComms;

W/dalvikvm(  757): VFY:  rejecting opcode 0x22 at 0x0000

W/dalvikvm(  757): VFY:  rejected Lcom/projectNoble/androidClient/serverComms;.initCommunication ()Ljava/lang/String;

W/dalvikvm(  757): Verifier rejected class Lcom/projectNoble/androidClient/serverComms;

D/AndroidRuntime(  757): Shutting down VM

源代码

可以在本页底部找到: http://hc.apache.org/httpclient-3.x/tutorial.html

【问题讨论】:

  • 发布您的堆栈跟踪和代码...
  • 是的,输入 adb logcat,然后获取实际的堆栈跟踪。
  • 抱歉,你是如何进入堆栈跟踪的?代码方面我已经把它全部注释掉了,它仍然出现在第一行: HttpClient client = new HttpClient();谢谢
  • 如果您使用的是 Eclipse,请查找 Logcat 选项
  • 感谢您的信息。现在添加堆栈跟踪。抱歉,时间长了……

标签: android android-emulator httpclient


【解决方案1】:

您从哪些 jars 中导入? Apache 客户端是 android 的一部分

正确的包装

import org.apache.http.client.HttpClient;

删除您的 jar 并仅使用 SDK 中的库

【讨论】:

  • 我从 apache 下载了 JAR 并导入了它们。
  • 没必要。使用 Alex 的方法
  • 请使用 SDK 中提供的基础组件 - 完整的软件包列表在这里 developer.android.com/reference/org/apache/http/… 你不想捆绑操作系统已经提供的东西。
  • 谢谢亚历克斯。我已经删除了我所指的 JARS,现在我使用: import org.apache.http.client.HttpClient;尽管对于 DefaultHttpClient,我仍然收到“找不到符号”,这很奇怪,因为它在这里提到:developer.android.com/reference/org/apache/http/impl/client/…
  • 你有这个导入权吗?导入 org.apache.http.impl.client.DefaultHttpClient;如果是这样,您可以更新问题中的堆栈跟踪吗?看来 NetBeans 并不是安卓开发的最佳 IDE。
【解决方案2】:

没有构造函数“HttpClient()”。

也许你想要这个:

HttpClient client = new DefaultHttpClient();

真的,不过,如果你想配置它等等,你不能传递一个空的构造函数。阅读文档以了解您可以传递的不同值。

此外,当您在 stackoverflow 上提出问题时,如果您发布代码以及所遇到错误的完整堆栈跟踪,您将获得更多帮助。您可以从 adb logcat 或 eclipse 中获取堆栈跟踪。

【讨论】:

  • 我试过“HttpClient client = new DefaultHttpClient();” netbeans 说:找不到符号。
  • 那么您缺少导入语句。这是一个示例项目,展示了DefaultHttpClient 的使用:github.com/commonsguy/cw-android/tree/master/Service/…
  • 他的导入是错误的,因为他将 jars 从 apache 直接带到了项目中
猜你喜欢
  • 2023-01-02
  • 1970-01-01
  • 2011-11-23
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
相关资源
最近更新 更多