我一直在尝试(失败)使用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捆绑的软件包。或者它与运行单元测试有关,但这只是一个简单的主要方法。
任何帮助都会很棒,因为我一整天都在苦苦挣扎
由于
答案 0 :(得分:1)
有同样的问题,来自lenbloy的链接有帮助(谢谢!)。这是做什么的(在eclipse中):
答案 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
旧版库已弃用。