HttpClient在DefaultHttpClient创建时崩溃

时间:2011-06-06 16:33:37

标签: java web-services httpclient

我一直在尝试(失败)使用HttpClient库向网络服务发送http请求,而我刚刚创建了一个简单的类来测试get请求......

DefaultHttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet("http://localhost/mywebservice/1");
        try {
            HttpResponse response = client.execute(get);
            BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            String line = "";
            while((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch(IOException e) {
e.printStackTrace();
    }

我的问题是它没有超过第1行,它会抛出以下运行时异常......

Exception in thread "main" java.lang.RuntimeException: Stub!
    at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:5)
    at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:7)
    at Main.main(Main.java:20)

我无法在任何地方找到任何解决方案,因为一切似乎要么说它与android sdk使用它的问题而没有运行模拟器,但我没有使用与android sdk捆绑的软件包。或者它与运行单元测试有关,但这只是一个简单的主要方法。

任何帮助都会很棒,因为我一整天都在苦苦挣扎

由于

4 个答案:

答案 0 :(得分:1)

有同样的问题,来自lenbloy的链接有帮助(谢谢!)。这是做什么的(在eclipse中):

  1. 右键单击您的项目。
  2. 构建路径 - &gt;配置构建路径...
  3. 转到“订购和导出”标签。
  4. 选择“httpclient-4.1.3.jar”(或您可能使用的任何其他版本)
  5. 点击右侧的“顶部”按钮。

答案 1 :(得分:1)

看看这个描述“Stub!”的问题。装置

Apache DefaultHttpClient invocation results in “java.lang.RuntimeException: Stub!”

总结:

这是Android告诉您无法在该平台上运行该单元测试的方式。涉及与Android平台交互的单元测试(例如本例中的网络)需要在实际的Android设备或正常运行的Android模拟器上运行。

显然,您正在针对Android SDK中的存根类运行单元测试。

答案 2 :(得分:0)

怪异。 this不帮助吗?

其他建议:确保您没有使用android lib,使用VM -verbose选项运行代码(java -verbose Myclass;或者将开关添加到Eclipse中的'VM arguments'运行配置选项卡)并查看哪个jar是AbstractHttpClient加载。

答案 3 :(得分:0)

版本28之后,请将其包含在清单文件中:

HttpClient旧版库已弃用。