一背景
在引用一个公用的登录jar,发现是给老的springmvc用的。配置filter那种方式,改为springboot之后。不好使。
Caused by: java.lang.NoSuchMethodError: org.jboss.netty.handler.codec.http.HttpRequest.headers()Lorg/jboss/netty/handler/codec/http/HttpHeaders;
at com.ning.http.client.providers.netty.request.NettyRequestFactory.newNettyRequest(NettyRequestFactory.java:178) ~[async-http-client-1.9.38.jar:na]
at com.ning.http.client.providers.netty.request.NettyRequestSender.newNettyRequestAndResponseFuture(NettyRequestSender.java:181) ~[async-http-client-1.9.38.jar:na]
at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequestWithCertainForceConnect(NettyRequestSender.java:135) ~[async-http-client-1.9.38.jar:na]
at com.ning.http.client.providers.netty.request.NettyRequestSender.sendRequest(NettyRequestSender.java:117) ~[async-http-client-1.9.38.jar:na]
at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.execute(NettyAsyncHttpProvider.java:87) ~[async-http-client-1.9.38.jar:na]
查看了下pom.
当前引用为:
<dependency>
<groupId>com.ning</groupId>
<artifactId>async-http-client</artifactId>
<version>1.9.38</version>
</dependency>
这个是2016年的,比较老了,而且最新的也是2016年的,已经没人维护了
尝试pom排除掉,引用1.9.40版本,还是报错。
算了,彻底放弃:改为asynchttpclient
pom.xml引用如下:
<dependency>
<groupId>org.asynchttpclient</groupId>
<artifactId>async-http-client</artifactId>
<version>2.12.1</version>
</dependency>
之前方法的使用了是guava的异步配合接口。
这种:
HttpListenableFuture<Response> future = HttpListenableFuture.wrap(client.executeRequest(builder.build()));
return Futures.transform(future, new Function<Response, String[]>() {
新的API:异步GET请求
ListenableFuture<Response> future =
client.prepareGet( "url" ).execute( new AsyncCompletionHandler<Response>() {
@Override
public Response onCompleted( Response response ) throws Exception {
String resp = response.getResponseBody();
return response;
}
@Override
public void onThrowable( Throwable t ) {
// Something wrong happened.
}
} );
异步post就不贴了。
类似的还有:
BoundRequestBuilder、addQueryParam 很多方法都要替换。
方法比较多,替换了一上午,再尝试发新的client包。替换。OK了。