天天看点

com.ning.http.client 替换

一背景

 在引用一个公用的登录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年的,已经没人维护了

com.ning.http.client 替换

尝试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了。

继续阅读