【发布时间】:2012-04-26 14:04:57
【问题描述】:
我正在尝试使用 Apache HttpAsyncClient(版本 4.0-beta1,在撰写本文时是最新版本)在 Android 上实现 REST 通信。
我的问题是,由于框架内出现 MethodNotFound 错误,我无法发出任何请求。
详细的堆栈跟踪是(在呈现的行之后,下一个来自我自己的代码):
java.lang.NoSuchMethodError: org.apache.http.client.utils.URIUtils.extractHost
at org.apache.http.impl.nio.client.AbstractHttpAsyncClient.determineTarget(AbstractHttpAsyncClient.java:594)
at org.apache.http.impl.nio.client.AbstractHttpAsyncClient.execute(AbstractHttpAsyncClient.java:578)
at org.apache.http.impl.nio.client.AbstractHttpAsyncClient.execute(AbstractHttpAsyncClient.java:569)
我所做的如下:
private static final String SERVER_SCHEME = "http";
private static final String SERVER_HOST = "localhost";
private static final int SERVER_PORT = 3000;
private static final String SERVER_BASE_PATH = "/api/v1";
private static final String PATH_LOGIN = "/login";
private DefaultHttpAsyncClient http_client;
public void test(String email, String password, ConnectionManagerCallback callback) {
this.http_client = new DefaultHttpAsyncClient();
this.http_client.start();
this.http_client.getCredentialsProvider().setCredentials(new AuthScope(SERVER_HOST, SERVER_PORT), new UsernamePasswordCredentials(email, password));
HttpPost request = new HttpPost(SERVER_SCHEME + "://" + SERVER_HOST + ":" + SERVER_PORT + SERVER_BASE_PATH + PATH_LOGIN);
this.http_client.execute(request, new Callback(REQUEST_LOGIN, callback));
}
为了示例,我删除了异常处理。问题是,我得到了我上面描述的异常。因此,由于它是一个测试版,我想为 HttpPost 使用不同的构造函数。但即使我将 URI 对象提供给构造函数,它也会尝试调用 extractHost 方法并崩溃。
在这方面有人可以帮我吗?我只是顺便添加了JAR,并没有自己编译库。
【问题讨论】:
-
我认为您使用的罐子与您的代码不兼容(新版本/旧版本)。尝试获取正确的版本(或)根据 Jar 版本更改您的代码。
-
看看答案here有没有帮助。
标签: java android asynchronous httpclient nosuchmethoderror