gpt4 book ai didi

java - Apache HttpAsyncClient - NoSuchMethodError - URIUtils.extractHost

转载 作者:行者123 更新时间:2023-12-02 00:24:14 25 4
gpt4 key购买 nike

我正在尝试使用 Apache HttpAsyncClient(版本 4.0-beta1,这是撰写本文时的最新版本)在 Android 上实现 REST 通信。

我的问题是,由于来自框架内的 MethodNotFound 错误,我无法发出任何请求。

详细的堆栈跟踪是(在显示的行之后,下一行来 self 自己的代码):

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,并没有自己编译库。

最佳答案

Apache HttpAsyncClient 基于名为 HttpCore 的低级 HTTP 传输库。 Google Android 附带了一个极其过时的 Apache HttpClient 版本,该版本也基于相同的库。 HttpAsyncClient 需要比 Android 附带的 HttpCore 版本更新的版本。但是,每当尝试调用新版本中的方法时,类加载器首先会拾取旧版本中的类,从而导致 NoSuchMethodError 异常。

不幸的是,此问题的唯一解决方案是将所有 HttpAsyncClient 代码及其依赖项移至不同的命名空间。

2020 年 11 月更新

升级到 Apache HttpClient 5.x

关于java - Apache HttpAsyncClient - NoSuchMethodError - URIUtils.extractHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10335125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com